我有一个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')并应用它。
但是,它不改变背景颜色,只对每一行应用蓝色。
发布于 2018-08-07 00:45:44
关于格式的xlsxwriter文档页中的修改格式部分很好地解释了这个问题(链接在这里)。从本质上讲,它解释了不可能使用一种格式,然后重新定义它,以便在以后使用,因为一种格式被应用于单元格的最终状态。
也许可以考虑创建一个创建格式的函数。然后,当您想要更改单元格颜色或添加到该函数中的其他格式时,可以根据需要调用此函数。
下面我给出了一个例子,说明你是如何做到这一点的。
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()预期产出:

https://stackoverflow.com/questions/51716723
复制相似问题