一尘不染

Pandas xlsxwriter,格式标题

python

我正在使用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()

试图为标题设置格式的倒数第二行不执行任何操作。


阅读 223

收藏
2020-12-20

共1个答案

一尘不染

我认为您需要先重置默认标题样式,然后才能更改它:

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()

在Excel中,单元格格式将覆盖行格式,而列格式将覆盖列格式。pd.core.format.header_style将转换为格式并应用于标题中的每个单元格。因此,默认值不能被覆盖set_row()。设置pd.core.format.header_styleNone表示标头单元格没有用户定义的格式,因此可以将其覆盖set_row()

编辑:在版本中,0.18.1您必须更改

pd.core.format.header_style = None

至:

pd.formats.format.header_style = None

编辑:从版本0.20再次更改

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

编辑:从版本0.24现在是必需的

import pandas.io.formats.excel
pandas.io.formats.excel.ExcelFormatter.header_style = None
2020-12-20