如何将 pandas DataFrame 样式化为 excel 文件

How to style a pandas DataFrame into an excel file

我正在尝试构建一个将数据写入 excel 文件的应用程序。因此,我尝试使用 pandas 库并使用 xlsxwriter 引擎。我从 pandas 库中阅读了有关 Styler object 的文档,但我找不到修改 table headers 样式的方法(或列 headers,我提供给 DataFrame 构造函数的字典的键)。事实上,我认为 set_table_styles 方法在我的情况下效果不佳。

这是我的代码 运行:

import os
import pandas

writer = pandas.ExcelWriter(f"{os.getcwd()}\Styled_excel.xlsx", engine="xlsxwriter", mode='w')

data_frame = pandas.DataFrame({"Pressure": [10, 20, 30, 50],
                               "Volume": [10, 8, 5, 2]})

styler = data_frame.style
styler.set_properties(**{'color': 'red', 'border-color': 'black', 'border-width': "1px"})
styler.set_table_styles([{'selector': 'th', 'props': [('font-weight', 'normal')]}])

styler.to_excel(excel_writer=writer, sheet_name="Feuil1", startrow=4, startcol=2, index=False)

writer.save()

虽然 set_properties 按预期工作,但 set_table_styles 似乎没有应用我想要的样式,这是包含“压力”和“音量”的单元格的正常字体粗细.

关于同一主题,我在文档中的任何地方都找不到以编程方式更改列宽的方法,是不支持吗?

如果您对我可能做错了什么或为什么它不起作用有任何线索,我提前感谢您的回答。

保罗

编辑:我确实找到了我遇到的问题的答案,但如果有人解释为什么我以前的代码没有按预期工作,我会很高兴听到它(但我认为这是由于事实上 set_table_styles 方法只能在呈现 html 页面或在 Jupyter Notebook 中显示 table 时使用)

我在 xlsxwriter documentation 上找到了解决我的两个问题的方法(在我发布这个问题之前我不知道它存在):

workbook = writer.book
worksheet = writer.sheets['Feuil1']

# Creation of format for the column headers
header_format = workbook.add_format({
    'bold': False,
    'border': 1})

# Writing the column headers only and applying the style with the format created
for col_num, value in enumerate(data_frame.columns.values):
    worksheet.write_string(0, col_num, value, header_format)

# Widening a column to fully fit a string in it
worksheet.set_column('C:C', 10)