回答问题

是否有人在 Python3 中使用 xlsxwriter 生成 excel 时实现了交替行颜色?

data_format = workbook.add_format(
    {
        'bg_color': '#FFC7CE'
    })

worksheet.write(data_row, data_col + 1, row[1], data_format)

这会设置每列的颜色。

Answers

没有什么可以阻止您手动设置格式,如下所示。有两种方法:

  1. 使用.add_format()为每一行添加格式。

  2. 使用.add_table()使用 Excel 表格添加数据。这种风格允许自动带状行。这还有一个优点,即如果表已排序,则条带不受影响。

之后可以使用上下文管理器自动关闭工作簿。

方法一:

手动将单元格格式应用于每一行:

import xlsxwriter

with xlsxwriter.Workbook('hello.xlsx') as workbook:
    worksheet = workbook.add_worksheet()

    data_format1 = workbook.add_format({'bg_color': '#FFC7CE'})
    data_format2 = workbook.add_format({'bg_color': '#00C7CE'})

    for row in range(0, 10, 2):
        worksheet.set_row(row, cell_format=data_format1)
        worksheet.set_row(row + 1, cell_format=data_format2)
        worksheet.write(row, 0, "Hello")
        worksheet.write(row + 1, 0, "world")

这将使您的输出如下所示:

交替行颜色


要将其应用于数据列表,您可以使用以下方法。这也显示了如何扩展它以使用其他格式:

import xlsxwriter
from itertools import cycle

data = ["Row 1", "Row 2", "Row 3", "Row 4", "Row 5", "Row 6"]

with xlsxwriter.Workbook('hello.xlsx') as workbook:
    data_format1 = workbook.add_format({'bg_color': '#EEEEEE'})
    data_format2 = workbook.add_format({'bg_color': '#DDDDDD'})
    data_format3 = workbook.add_format({'bg_color': '#CCCCCC'})
    formats = cycle([data_format1, data_format2, data_format3])
    
    worksheet = workbook.add_worksheet()

    for row, value in enumerate(data):
        data_format = next(formats)

        worksheet.set_row(row, cell_format=data_format)
        worksheet.write(row, 0, value)

第二版

方法2:

使用带状样式的.add_table()添加数据:

import xlsxwriter

data = [["Row 1"], ["Row 2"], ["Row 3"], ["Row 4"], ["Row 5"], ["Row 6"]]

with xlsxwriter.Workbook('hello.xlsx') as workbook:
    worksheet = workbook.add_worksheet()
    worksheet.add_table('A1:A6', {'data' : data, 'header_row' : False})

Excel 带有许多不同的预定义表格样式,可以通过传递style参数来选择这些样式,如下所示:

'style': 'Table Style Light 11'

有关更多信息,请查看:使用工作表

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐