格式化 Excel 列 header 以获得更好的可见性和颜色
Format Excel Column header for better visibility and Color
我浏览了很多帖子,但没有找到执行以下操作的确切方法。
抱歉附上截图(只是为了更好的可见性),我也会写。
基本上它看起来像 -
Name_of_the_Man Address_of_Man City
Jordan NC LMN
输入的 csv 看起来像
需要输出
我有这段代码可以选择 csv 并作为 sheet 附加到 excel.
writer = pd.ExcelWriter('final.xlsx'), engine='xlsxwriter')
for f in glob.glob(os.path.join(Path, "*.csv")):
df = pd.read_csv(f)
df.to_excel(writer, sheet_name=os.path.basename(f))
writer.save()
我想要我的 csv 文件 - 中间有很好的 space 并且列 header.I 的颜色已经完成 link Python - change header color of dataframe and save it to excel file 但它没有达到目的- 它将 sheet 本身与列分开着色。
更新:
得到了下面的答案。还想知道这是否可能只是一个想法
您可以使用 Pandas Excel output with user defined header format with solution 按内容更改宽度:
writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object. Note that we turn off
# the default header and skip one row to allow us to insert a user defined
# header. Also remove index values by index=False
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add a header format.
header_format = workbook.add_format({
'bold': True,
'fg_color': '#ffcccc',
'border': 1})
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
column_len = df[value].astype(str).str.len().max()
# Setting the length if the column header is larger
# than the max column value length
column_len = max(column_len, len(value)) + 3
print(column_len)
# set the column length
worksheet.set_column(col_num, col_num, column_len)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
更改了您的解决方案:
writer = pd.ExcelWriter('final.xlsx'), engine='xlsxwriter')
for f in glob.glob(os.path.join(Path, "*.csv")):
df = pd.read_csv(f)
df.to_excel(writer, sheet_name=os.path.basename(f))
workbook = writer.book
worksheet = writer.sheets[os.path.basename(f)]
# Add a header format.
header_format = workbook.add_format({
'bold': True,
'fg_color': '#ffcccc',
'border': 1})
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
column_len = df[value].astype(str).str.len().max()
# Setting the length if the column header is larger
# than the max column value length
column_len = max(column_len, len(value)) + 3
print(column_len)
# set the column length
worksheet.set_column(col_num, col_num, column_len)
writer.save()
编辑:
writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
#skip 2 rows
df.to_excel(writer, sheet_name='Sheet1', startrow=2, header=False, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add a header format.
header_format = workbook.add_format({
'bold': True,
'fg_color': '#ffcccc',
'border': 1})
#create dictionary for map length of columns
d = dict(zip(range(25), list(string.ascii_uppercase)))
#print (d)
max_len = d[len(df.columns) - 1]
print (max_len)
#C
#dynamically set merged columns in first row
worksheet.merge_range('A1:' + max_len + '1', 'This Sheet is for Personal Details')
for col_num, value in enumerate(df.columns.values):
#write to second row
worksheet.write(1, col_num, value, header_format)
column_len = df[value].astype(str).str.len().max()
column_len = max(column_len, len(value)) + 3
worksheet.set_column(col_num, col_num, column_len)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
我浏览了很多帖子,但没有找到执行以下操作的确切方法。 抱歉附上截图(只是为了更好的可见性),我也会写。 基本上它看起来像 -
Name_of_the_Man Address_of_Man City
Jordan NC LMN
输入的 csv 看起来像
需要输出
我有这段代码可以选择 csv 并作为 sheet 附加到 excel.
writer = pd.ExcelWriter('final.xlsx'), engine='xlsxwriter')
for f in glob.glob(os.path.join(Path, "*.csv")):
df = pd.read_csv(f)
df.to_excel(writer, sheet_name=os.path.basename(f))
writer.save()
我想要我的 csv 文件 - 中间有很好的 space 并且列 header.I 的颜色已经完成 link Python - change header color of dataframe and save it to excel file 但它没有达到目的- 它将 sheet 本身与列分开着色。
更新:
得到了下面的答案。还想知道这是否可能只是一个想法
您可以使用 Pandas Excel output with user defined header format with solution 按内容更改宽度:
writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object. Note that we turn off
# the default header and skip one row to allow us to insert a user defined
# header. Also remove index values by index=False
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add a header format.
header_format = workbook.add_format({
'bold': True,
'fg_color': '#ffcccc',
'border': 1})
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
column_len = df[value].astype(str).str.len().max()
# Setting the length if the column header is larger
# than the max column value length
column_len = max(column_len, len(value)) + 3
print(column_len)
# set the column length
worksheet.set_column(col_num, col_num, column_len)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
更改了您的解决方案:
writer = pd.ExcelWriter('final.xlsx'), engine='xlsxwriter')
for f in glob.glob(os.path.join(Path, "*.csv")):
df = pd.read_csv(f)
df.to_excel(writer, sheet_name=os.path.basename(f))
workbook = writer.book
worksheet = writer.sheets[os.path.basename(f)]
# Add a header format.
header_format = workbook.add_format({
'bold': True,
'fg_color': '#ffcccc',
'border': 1})
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
column_len = df[value].astype(str).str.len().max()
# Setting the length if the column header is larger
# than the max column value length
column_len = max(column_len, len(value)) + 3
print(column_len)
# set the column length
worksheet.set_column(col_num, col_num, column_len)
writer.save()
编辑:
writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
#skip 2 rows
df.to_excel(writer, sheet_name='Sheet1', startrow=2, header=False, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add a header format.
header_format = workbook.add_format({
'bold': True,
'fg_color': '#ffcccc',
'border': 1})
#create dictionary for map length of columns
d = dict(zip(range(25), list(string.ascii_uppercase)))
#print (d)
max_len = d[len(df.columns) - 1]
print (max_len)
#C
#dynamically set merged columns in first row
worksheet.merge_range('A1:' + max_len + '1', 'This Sheet is for Personal Details')
for col_num, value in enumerate(df.columns.values):
#write to second row
worksheet.write(1, col_num, value, header_format)
column_len = df[value].astype(str).str.len().max()
column_len = max(column_len, len(value)) + 3
worksheet.set_column(col_num, col_num, column_len)
# Close the Pandas Excel writer and output the Excel file.
writer.save()