Формат в XlsxWriter «применяется к ячейке не в ее текущем состоянии, а в ее конечном состоянии» (см. Этот раздел документации ). Итак, в вашем примере создается только один уникальный формат с последним примененным цветом.
Вы можете исправить это, создав новый формат в l oop:
for i in range(5):
bg_format = workbook.add_format()
bg_format.set_bg_color(colors[i % 3])
print(colors[i % 3])
worksheet.write_column(1, i, content, cell_format=bg_format)
Однако это может быть неэффективным для большого количества итераций. Более эффективным способом было бы создать уникальный формат для каждого из нужных вам типов цветов и повторно использовать их. Как это:
import xlsxwriter
workbook = xlsxwriter.Workbook('Example5.xlsx')
worksheet = workbook.add_worksheet()
green_format = workbook.add_format({'bg_color': 'green'})
cyan_format = workbook.add_format({'bg_color': 'cyan'})
magenta_format = workbook.add_format({'bg_color': 'magenta'})
bg_formats = [green_format, cyan_format, magenta_format]
colors = ['green', 'cyan', 'magenta']
content = ["A", "B", "C", "D"]
for i in range(5):
bg_format = bg_formats[i % 3]
print(colors[i % 3])
worksheet.write_column(1, i, content, cell_format=bg_format)
workbook.close()
Вывод :
введите описание изображения здесь