使用 xlsxwriter 仅格式化带有数据的标题

worksheet.set_row()通过使用仅应用于包含数据的列来获取格式时我遇到了一些麻烦。就目前而言,当我打开工作簿时,格式会应用于整个标题行,甚至超过数据停止的位置,这看起来有点草率,见下文:

http://img1.mukewang.com/61e686fa0001c51406710212.jpg

如您所见,格式继续到列 AL、AM、AN、AO 等...由于这些列(或与此有关的标题)中没有数据,因此看起来有点草率。


我以前使用以下内容将格式应用于工作簿中的每个工作表:


header = workbook.add_format({'bold': True, 'bottom': 2, 'bg_color': '#F9DA04'})

worksheet.set_row(0, None, header)

我知道这是因为worksheet.set_row()使用行索引。我找不到任何关于这个范围的文档,我可以以某种方式指定A1:AK1或类似的东西吗?如果重要的话,每个工作表都是pd.concat()使用 Pandas 的多个数据框的结果。


繁星点点滴滴
浏览 250回答 1
1回答

神不在的星期二

如您所见,格式继续到 AL、AM、AN、AO 等列。这就是行格式在 Excel 中的工作方式。如果将其应用于一行,则所有单元格都会被格式化。我可以以某种方式指定 A1:AK1 或类似的东西吗?如果您只想格式化某些单元格,那么最好将格式仅应用于这些单元格。例如:import xlsxwriterworkbook = xlsxwriter.Workbook('test.xlsx')worksheet = workbook.add_worksheet()header_data = ['EID', 'Notification', 'Test #']header_format = workbook.add_format({'bold': True,                                     'bottom': 2,                                     'bg_color': '#F9DA04'})for col_num, data in enumerate(header_data):    worksheet.write(0, col_num, data, header_format)workbook.close()输出:如果重要的话,每个工作表都是使用 Pandas 的多个数据帧的 pd.concat() 的结果。有关如何从数据帧格式化标头的示例,请参见 XlsxWriter文档中的此示例:import pandas as pd# Create a Pandas dataframe from the data.df = pd.DataFrame({'Data1': [10, 20, 30, 20],                   'Data2': [10, 20, 30, 20],                   'Data3': [10, 20, 30, 20],                   'Data4': [10, 20, 30, 20]})# Create a Pandas Excel writer using XlsxWriter as the engine.writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')# Turn off the default header and skip one row to allow us to insert a# user defined header.df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False)# Get the xlsxwriter workbook and worksheet objects.workbook  = writer.bookworksheet = writer.sheets['Sheet1']# Add a header format.header_format = workbook.add_format({'bold': True,                                     'bottom': 2,                                     'bg_color': '#F9DA04'})# Write the column headers with the defined format.for col_num, value in enumerate(df.columns.values):    worksheet.write(0, col_num + 1, value, header_format)# Close the Pandas Excel writer and output the Excel file.writer.save()输出:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python