pandas xlsxwriter,格式化表头 - 不是表头

新手上路,请多包涵

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

尝试为标题设置格式的倒数第二行什么都不做。

原文由 Egor Ignatenkov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

 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

编辑:从 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

谢谢 Chris Vecchio

原文由 jezrael 发布,翻译遵循 CC BY-SA 4.0 许可协议

任何看到这篇文章并使用 Pandas 0.20.1 的人的更新。

现在看来所需的代码是

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

显然 excel 子模块不会自动导入,所以简单地尝试 pandas.io.formats.excel.header_style = None 单独会引发 AttributeError

原文由 Ironbeard 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题