在xlsxwriter python中为不同的列设置不同的bg_颜色

在xlsxwriter python中为不同的列设置不同的bg_颜色,python,formatting,xlsx,xlsxwriter,Python,Formatting,Xlsx,Xlsxwriter,我想为不同的列设置不同的背景填充颜色,但没有达到预期效果 import xlsxwriter workbook = xlsxwriter.Workbook('Example5.xlsx') worksheet = workbook.add_worksheet() bg_format = workbook.add_format() colors = ['green', 'cyan', 'magenta'] content = ["A", "B", &

我想为不同的列设置不同的背景填充颜色,但没有达到预期效果

import xlsxwriter 

workbook = xlsxwriter.Workbook('Example5.xlsx') 
worksheet = workbook.add_worksheet() 
bg_format = workbook.add_format()
colors = ['green', 'cyan', 'magenta']
content = ["A", "B", "C", "D"]
for i in range(5):
    bg_format.set_bg_color(colors[i % 3])
    print(colors[i % 3])
    worksheet.write_column(1, i, content, cell_format=bg_format)
workbook.close()
我得到的是:

我期望得到的是:

XlsxWriter中的格式“应用于不是处于当前状态而是处于最终状态的单元格”(请参见此)。因此,在您的示例中,只创建了一种唯一的格式,该格式具有应用的最后一种颜色

您可以通过在循环中创建新格式来解决此问题:

范围(5)内的i的
:
bg_format=工作簿。添加_format()
背景格式。设置背景颜色(颜色[i%3])
打印(颜色[i%3])
工作表。写入列(1,i,内容,单元格格式=bg格式)
然而,对于大量迭代来说,这可能是低效的。一种更有效的方法是为您需要的每种颜色类型创建一种独特的格式并重用它们。像这样:

导入xlsxwriter
工作簿=xlsxwriter.workbook('Example5.xlsx')
工作表=工作簿。添加工作表()
绿色\格式=工作簿。添加\格式({'bg\ u color':'green'})
青色\格式=工作簿。添加\格式({'bg\ u color':'cyan'})
洋红格式=工作簿。添加格式({'bg\u color':'magenta'})
bg_格式=[绿色_格式、青色_格式、洋红_格式]
颜色=['绿色','青色','洋红']
内容=[“A”、“B”、“C”、“D”]
对于范围(5)中的i:
bg_格式=bg_格式[i%3]
打印(颜色[i%3])
工作表。写入列(1,i,内容,单元格格式=bg格式)
工作簿.关闭()
输出