首页 > 解决方案 > 根据行号格式化行

问题描述

我正在尝试根据行号使用 openpyxl 格式化行。这是我的尝试:

for row in ws2.iter_rows(min_row=3, min_col=3, max_col=26):
    if ((row-3)//4)+1 % 2 == 0:
        for cell in row:
            cell.fill = PatternFill(bgColor="A0ACEA", fill_type="solid")
    else:
        for cell in row:
            cell.fill = PatternFill(bgColor="D3D7F0", fill_type="solid")

我收到以下错误。我明白这意味着什么,但我不知道如何解决它。

if ((row-3)//4)+1 % 2 == 0:
TypeError: unsupported operand type(s) for -: 'tuple' and 'int'

标签: pythonopenpyxl

解决方案


您在第一个 for 循环中获得的每一行都是一个元组,而不是一个 int。当你尝试时row-3,你会得到一个错误,因为你不能对元组和整数进行算术运算。

你得到的是行本身,而不是行的索引。这正是enumerate它的用途。

尝试这个:

for i, row in enumerate(ws2.iter_rows(min_row=3, min_col=3, max_col=26)):
    if ((i-3)//4)+1 % 2 == 0:

推荐阅读