使用xlsxwriter为Excel中的数据框行着色

1 投票
1 回答
46 浏览
提问于 2025-04-14 16:33

这是我的代码,我的问题似乎是在把数据框写入Excel时,生成了一些我无法覆盖的格式:

import polars as pl
import xlsxwriter as writer

df = pl.DataFrame({
    "A": [1, 2, 3, 2, 5],
    "B": ["x", "y", "x", "z", "y"]
})

with writer.Workbook('text_book.xlsx') as wb:
    worksheet = wb.add_worksheet()
    data_format1 = wb.add_format({'bg_color': '#FFC7CE'})
    df.write_excel(wb, worksheet = 'Sheet1', autofilter= False,
                         autofit = True, position = 'A3', include_header = False)
    for row in range(0,10,2):
        worksheet.set_row(row+2, cell_format=data_format1)

输出结果:

这里输入图片描述

理想的输出应该是:

这里输入图片描述

我想找到一种方法,可以遍历一些行的索引,并为这些行设置颜色。

1 个回答

3

你的示例代码没有按预期工作,原因是Polars的write_excel()函数会为数字应用一种单元格格式,这样就会覆盖行的格式。

你可以通过write_excel()这个接口来控制列或数据类型的格式,但这样无法逐行控制。想要实现你想要的效果,更好的方法是为输出的数据框设置一个表格样式属性。

Polars会将数据框导出为工作表表格(可以查看XlsxWriter的文档),所以你可以这样指定表格样式:

mport polars as pl
import xlsxwriter as writer

df = pl.DataFrame({
    "A": [1, 2, 3, 2, 5],
    "B": ["x", "y", "x", "z", "y"]
})

with writer.Workbook("text_book.xlsx") as wb:
    worksheet = wb.add_worksheet()
    df.write_excel(
        wb,
        worksheet="Sheet1",
        autofilter=False,
        autofit=True,
        position="A3",
        include_header=False,
        table_style="Table Style Medium 3",
    )

这样输出的效果是这样的:

enter image description here

撰写回答