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

如何在Python中保留原Excel格式保存并实现条件单元格着色?

使用openpyxl实现带格式Excel的条件格式设置

直接上可运行代码,完全基于openpyxl操作,保留原Excel的所有格式:

from openpyxl import load_workbook
from openpyxl.styles import PatternFill

# 定义填充颜色
green_fill = PatternFill(start_color="00FF00", end_color="00FF00", fill_type="solid")
red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")

# 加载Excel文件,data_only=False保留原格式和公式
wb = load_workbook("your_file.xlsx", data_only=False)

# 遍历所有工作表
for ws in wb.worksheets:
    # 遍历每行(从第2行开始,假设第1行是表头)
    for row in ws.iter_rows(min_row=2):
        b_cell = row[1]  # B列是索引1(从0开始计数)
        # 判断B列单元格是否为数值类型
        if b_cell.data_type == "n":
            b_value = b_cell.value
            # 遍历当前行的其他列(跳过B列)
            for cell in row:
                if cell == b_cell:
                    continue
                # 仅当当前单元格是数值时才执行对比
                if cell.data_type == "n":
                    diff = abs(cell.value - b_value)  # 用绝对值差,可根据需求修改计算逻辑
                    if diff > 10:
                        cell.fill = green_fill
                    elif diff < 10:
                        cell.fill = red_fill
                    # 等于10的情况可自行添加处理逻辑

# 保存修改后的文件(建议先备份原文件,可选择覆盖原文件或另存为)
wb.save("modified_file.xlsx")

关键说明:

  • load_workbook的data_only=False必须保留,否则会丢失原文件的公式和格式设置。
  • 代码默认从第2行开始处理,若表头行数不同,修改min_row的值即可。
  • 对比逻辑用了绝对值差,如需其他对比方式(如其他列值直接减B列值),直接修改diff的计算方式。
  • 仅当B列和目标列均为数值类型时才执行对比,自动跳过文本、空值等非数值单元格。
  • 操作前建议备份原文件,避免失误导致数据损坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:52:47