Xlsxwriter – 无法格式化使用xlsxwriter的pandas数据框单元格

我有一个来自pandas数据框的Excel表格。 然后,我使用Xlsxwriter来添加公式,新列和格式。 问题是我似乎只能格式化我用xlsxwriter写的东西,没有什么来自数据框。 所以我得到的就是这个半格式表

从图像中可以看出,dataframe中的两列保持不变。 他们必须有某种默认的格式,这是压倒我的。

由于我不知道如何将工作表转换回数据框,下面的代码显然是完全错误的,只是给出了我正在寻找的东西。

export = "files/sharepointExtract.xlsx" df = pd.read_excel(export)# df = dataframe writer = pd.ExcelWriter('files/new_report-%s.xlsx' % (date.today()), engine = 'xlsxwriter') workbook = writer.book # Code to make the header red, this works fine because # it's written in xlsxwriter using write.row() colour_format = workbook.add_format() colour_format.set_bg_color('#640000') colour_format.set_font_color('white') worksheet.set_row(0, 15, colour_format) table_body_format = workbook.add_format() table_body_format.set_bg_color('blue') for row in worksheet.rows: row.set_row(0,15, table_body_format) 

这段代码给出了一个属性错误,但即使没有for循环,我们也只能得到图像中可以看到的东西。

以下应该工作:

 import pandas as pd from datetime import date export = "files/sharepointExtract.xlsx" df = pd.read_excel(export) writer = pd.ExcelWriter('files/new_report-{}.xlsx'.format(date.today()), engine ='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1', startrow=1 , startcol=0, header=False, index=False, encoding='utf8') workbook = writer.book worksheet = writer.sheets['Sheet1'] # Code to make the header red colour_format = workbook.add_format() colour_format.set_bg_color('#640000') colour_format.set_font_color('white') # Code to make the body blue table_body_format = workbook.add_format() table_body_format.set_bg_color('blue') worksheet.set_row(0, 15, colour_format) worksheet.set_column('A:Z', 15, table_body_format) # Write the header manually for colx, value in enumerate(df.columns.values): worksheet.write(0, colx, value) writer.save() 

当Pandas被用来写头时,它使用自己的格式样式来覆盖底层的xlsxwriter版本。 最简单的方法是停止写入标题,并从第1行开始(而不是0 )写入其余的数据。 这可以避免格式化被改变。 然后,您可以使用数据框中的列值轻松地编写自己的头文件。