pandasxlsxwriter,格式标题

我使用xlsxwriter将pandas DataFrame保存为_excel。 我设法格式化所有的数据(设置列宽,字体大小等),除了改变标题的字体,我找不到方法来做到这一点。 这是我的例子:

import pandas as pd data = pd.DataFrame({'test_data': [1,2,3,4,5]}) writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter') data.to_excel(writer, sheet_name='test', index=False) workbook = writer.book worksheet = writer.sheets['test'] font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10}) header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True}) worksheet.set_column('A:A', None, font_fmt) worksheet.set_row(0, None, header_fmt) writer.save() 

尝试设置标题格式的倒数第二行不做任何事情。

我想你需要先重置默认的标题样式,然后你可以改变它:

 pd.core.format.header_style = None 

全部一起:

 import pandas as pd data = pd.DataFrame({'test_data': [1,2,3,4,5]}) writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter') pd.core.format.header_style = None data.to_excel(writer, sheet_name='test', index=False) workbook = writer.book worksheet = writer.sheets['test'] font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10}) header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True}) worksheet.set_column('A:A', None, font_fmt) worksheet.set_row(0, None, header_fmt) writer.save() 

jmcnamara的解释,谢谢:

在Excel中,单元格格式覆盖行格式将覆盖列格式。将pd.core.format.header_style转换为格式并应用于标题中的每个单元格。 因此,默认值不能被set_row()覆盖。 将pd.core.format.header_style设置为None意味着标题单元格没有用户定义的格式,因此可以通过set_row()覆盖它。

编辑:在版本0.18.1你必须改变

 pd.core.format.header_style = None 

至:

 pd.formats.format.header_style = None 

谢谢krvkir 。

任何人遇到这个post,并使用pandas0.20.1更新。

看来所需的代码是现在

 import pandas.io.formats.excel pandas.io.formats.excel.header_style = None 

显然, excel子模块不是自动导入的,所以只需单独尝试pandas.io.formats.excel.header_style = None就会引发一个AttributeError

在pandas0.20,接受的答案的解决scheme再次改变。

应该设置为None的格式可以在以下位置find:

 pandas.io.formats.excel.header_style