循环和XLSXwriter格式化一行

时间:2017-09-28 15:38:22

标签: python loops xlsxwriter

我有一个工作簿,其中包含许多工作表,我想在创建之后对其进行格式化,我想根据列更改标题行的颜色。例如,我希望前9列是一种颜色,然后第10列应该是另一种颜色,然后所有其余的应该是第三种颜色。

这就是我正在循环...它有点工作,但第0行中的所有单元格都以相同的颜色结束;分配的最后一个颜色始终覆盖以前的列。

visitFormat = mtbook.add_format({'bg_color':'#e9ccfc'})
cognotesFormat = mtbook.add_format({'bg_color':'#d2eff2'})
filedateFormat = mtbook.add_format({'bg_color':'#8cbcff'})

for worksheet in mtbook.worksheets():
    print(worksheet)
    # for every column
    for i in range(len(subreportCols)):
        # set header bgcolor based on current column (i)
        if [i] in range(0,11):
            useheader = visitFormat
        elif [i] == 10:
            useheader = cognotesFormat
        else:
            useheader = filedateFormat
        # Write the value from cell (first row, column=1) back into that cell with formatting applied
        worksheet.write(0, i, subreportCols[i], useheader)

我对此感到困惑,因为我认为它是分别编写每一列。我是否需要以某种方式逐个细胞地完成这个细胞?

谢谢!

1 个答案:

答案 0 :(得分:1)

通过故障排除解决了这个问题,以防万一它可以帮助其他人(有一个"回答问题"按钮,毕竟)。

在这一行:

if [i] in range(0,11):

...我以为我在做的是使用[i]作为对我列表中第i个值的引用,但实际上我引用了整个列表。我换了[i]只为我,这很好。