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

使用pd.xlsxwriter基于行内含"Total"的单元格为整行设置条件格式

Pandas XlsxWriter 整行条件格式修复方案

你原有代码存在两处核心问题:

  • 未定义workbook对象,直接调用workbook.add_format会触发变量未定义报错
  • 使用单元格级别的包含匹配规则,仅能对命中的单个单元格生效,无法覆盖整行

修复后完整代码

import pandas as pd
from datetime import datetime

# 修正缩进问题,初始化ExcelWriter
writer = pd.ExcelWriter(
    f"~/{datetime.today().strftime('%Y.%m.%d')} - Report.xlsx",
    engine="xlsxwriter",
    date_format="dd/mm/yyyy",
    datetime_format="dd/mm/yyyy",
)
# 补充获取workbook对象(原有代码缺失该行)
workbook = writer.book
worksheet = writer.sheets["Sheet1"]

comma_format = workbook.add_format(
    {"num_format": "#,###;[Red](#,###);-", "bold": True}
)

# 修改条件格式为公式匹配,实现整行命中效果
worksheet.conditional_format(
    "$A$2:$J$1000",
    {
        "type": "formula",
        "criteria": '=COUNTIF($A2:$J2,"*Total*")>0',
        "format": comma_format,
    },
)

# 原有代码缺失的话需补充导出、关闭逻辑
# df.to_excel(writer, sheet_name="Sheet1", index=False)
# writer.close()

核心修改说明

  • 公式=COUNTIF($A2:$J2,"*Total*")>0会逐行判断当前行A到J列的所有单元格,只要有任意一个单元格包含Total字符串就满足匹配规则
  • 公式中列标识加$做绝对引用,行号不加$做相对引用,保证每一行的判断逻辑独立,命中后对当前行的A-J所有单元格生效
  • 补充了workbook = writer.book代码,修复原代码中workbook变量未定义的运行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:06:03