You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Openpyxl的CellIsRule函数时触发AttributeError,求助解决

排查并解决openpyxl条件格式的AttributeError问题

嘿,我来帮你搞定这个报错!先拆解下你代码里触发AttributeError的核心问题,再给你修正后的完整代码:

错误原因分析

你的代码里有几个关键问题,其中直接导致AttributeError的是:

  • 错误引用CellIsRule类:你已经通过from openpyxl.formatting.rule import CellIsRule单独导入了这个类,但后面调用时却写成了formatting.CellIsRule——你的代码里并没有定义formatting这个对象,所以Python找不到这个属性,直接抛出AttributeError。
  • 另外还有两个隐性问题,虽然没直接触发当前报错,但也会导致后续运行失败:
    1. 缺少os模块的导入,你用了os.chdir()却没写import os。
    2. font参数格式错误:CellIsRule要求传入Font对象,而不是直接传颜色字符串。

修正后的完整代码

import os
from openpyxl import load_workbook
from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import Font

# 切换到目标文件所在目录
os.chdir(r'C:\Users\myfolder')
# 加载目标Excel工作簿
wb = load_workbook('myfile.xlsx')
ws = wb.active

# 定义红色字体样式
red_font = Font(color="#FF0000")
# 添加条件格式:S3:S89区域等于1时显示红色字体
ws.conditional_formatting.add(
    'S3:S89',
    CellIsRule(
        operator='equal',
        formula=['1'],
        font=red_font
    )
)

# 务必保存修改后的工作簿(可以覆盖原文件或保存为新文件)
wb.save('myfile_formatted.xlsx')

关键修改说明

  • 补充了缺失的import os和from openpyxl.styles import Font,确保依赖模块都被正确导入。
  • 把formatting.CellIsRule改为直接使用CellIsRule,符合你之前的导入逻辑。
  • 创建Font对象来封装红色字体样式,满足CellIsRule的参数要求。
  • 增加了wb.save()调用,不然你的条件格式修改不会被写入到文件中。

内容的提问来源于stack exchange,提问作者FaCoffee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:47:04