我有一个创建报告的python脚本。
我想将颜色a应用于行a,然后将颜色b应用于行b,...
我可以创建变量formatA = workbook.add_format({'bg_color': 'red'})
和formatB = workbook.add_format({'bg_color': 'blue'})
,依此类推。
但是,我认为这样做format = workbook.add_format({'bg_color': 'red'})
会更容易,然后当我遍历要使用的行时,执行format.set_bg_color('blue')并将其应用。
但是,它不会更改背景颜色,只会将蓝色应用于每一行。
答案 0 :(得分:1)
xlsxwriter文档页面上有关格式的“修改格式”部分很好地解释了此问题(link here)。从本质上讲,它解释了不可能使用格式,然后再将其重新定义以供以后使用,因为格式已应用于处于最终状态的单元格。
也许可以考虑创建一个创建格式的函数。然后,当您想更改单元格颜色或添加到该函数的其他格式时,可以根据需要调用此函数。
我在下面提供了一个示例,说明如何执行此操作。
import pandas as pd
df = pd.DataFrame({'col_a': ['a','b','c'],
'col_b': [1,2,3]})
def format_function(bg_color = 'red'):
global format
format=workbook.add_format({
'bg_color' : bg_color
})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook=writer.book
worksheet = writer.sheets['Sheet1']
# Setting the format but not setting the row height.
format_function(bg_color = 'red')
worksheet.set_row(1, None, format)
format_function(bg_color = 'blue')
worksheet.set_row(2, None, format)
format_function(bg_color = 'pink')
worksheet.set_row(3, None, format)
writer.save()
预期输出: