使用xlsxwriter为Excel中的数据框行着色
这是我的代码,我的问题似乎是在把数据框写入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",
)
这样输出的效果是这样的: