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

基于Excel单元格颜色添加Status列:代码失效求助

问题排查与修复

核心错误原因

  • 使用ws.iter_rows(values_only=True)时,返回的是单元格值(如字符串、数字)而非单元格对象,因此无法调用cell.fill.fgColor.rgb属性,直接引发属性错误。
  • 额外隐患:next(data)[1:]会丢弃第一列的列名,可能导致DataFrame列数与原始数据不匹配。

修复后的代码

import pandas as pd
from openpyxl import load_workbook

filename = "Excel_Diff.xlsx"
wb = load_workbook(filename)
sheet_name = "Sheet1"
ws = wb[sheet_name]

# 正确读取表头与数据(保留所有列)
data = ws.values
columns = next(data)
df = pd.DataFrame(data, columns=columns)

status_column = []
# 从第2行开始遍历数据行(跳过表头),不要加values_only=True,保留单元格对象
for row in ws.iter_rows(min_row=2):
    # 检查该行所有单元格是否为指定绿色
    all_green = all(cell.fill.fgColor.rgb == "FF00FF00" for cell in row)
    status_column.append("PASS" if all_green else "FAIL")

# 将Status列加入DataFrame
df["Status"] = status_column

# 可选:将结果保存回Excel
df.to_excel("Excel_Diff_Result.xlsx", index=False)

关键说明

  1. 获取单元格对象:去掉iter_rows的values_only=True参数,确保能访问单元格的格式属性。
  2. 跳过表头:用min_row=2从数据行开始判断,避免把表头行的格式纳入判断逻辑。
  3. 列名完整性:next(data)保留完整表头,避免列数不匹配问题。
  4. RGB值验证:如果仍不生效,可通过print(cell.fill.fgColor.rgb)输出实际单元格的RGB值,确认是否与FF00FF00一致(部分绿色填充的RGB可能不同)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:17:54