在 Python 上使用 Openpyxl 的 PatternFill 问题。谁能帮我?

PatternFill issue using Openpyxl on Python. Can anyone help me?

我正在尝试使用 Openpyxl 中的 IF 和 Patternfill 根据其文本更改单元格的背景颜色,但我收到类型错误。请参阅下面的代码:

#Level - Replied Travel Alerts(RTA)
        incident_index = item.body.index("incident") + 12
        category_indexpos = item.body[incident_index:].index("Category") + incident_index
        level = item.body[incident_index:category_indexpos]
        ws.cell(row=index+2, column = 2).value = level
        
        if "Advisory" in level:
            advisory_pattern = Pattern(patternType = "solid", fgColor="FFFF00")
            ws.cell(row=index+2, column = 2).fill = advisory_pattern
        
        elif "Notice" in level:
            notice_pattern = Pattern(patternType = "solid", fgColor = "00B050")
            ws.cell(row=index+2, column = 2).fill = notice_pattern
        elif "Special" in level:
            special_pattern = Pattern(patternType = "solid", fgColor= "FF0000")
            ws.cell(row=index+2, column = 2).fill = special_pattern

但我在“advisory_pattern = Pattern(patternType = "solid", fgColor="FFFF00")" 行中收到错误。查看留言:

发生异常:TypeError 无法创建 're.Pattern' 个实例

谁能帮帮我?

谢谢

嗯,re.Pattern 来自python re 库,与在 Openpyxl 中创建背景填充无关

首先,我会在您的代码顶部使用此导入:

from openpyxl.styles import fills

然后你可以修改你的线条以适应这种格式(我用你的第一个填充作为我的例子):

ws.cell(row=index+2, column = 2).fill = fills.PatternFill("solid", fgColor="FFFF00")

如果您仍想将填充存储在变量中,只需确保您使用的是来自 openpyxl 填充库的填充对象,而不是来自 python re 库的 Pattern 对象。