商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Python轻松实现在Excel工作表中应用条件格式

Python轻松实现在Excel工作表中应用条件格式

  发布于2026-07-09 阅读(0)

扫一扫,手机访问

日常处理Excel数据,条件格式是个好帮手。它能根据单元格内容自动套用格式,帮你快速揪出数据模式、标出关键信息,或者一眼发现异常值。如果再用Python把这套活儿自动化了,处理海量数据或者批量生成报表的时候,效率提升可不是一星半点。

下面就来聊聊,怎么用Python和Spire.XLS库,在Excel工作表中玩转几种常见的条件格式:基于单元格值的格式、高亮重复值和唯一值、数据条可视化,还有图标集。

环境准备

先把库装上:

pip install Spire.XLS

搞定之后,就可以上代码了。

基于单元格值的条件格式

这是最入门的一种——根据数字大小来决定格式。比如让大于某个阈值的格子变红,小于某个值的变绿。

下面这段代码,创建了一个带示例数据的工作表,然后加了两条规则:

from spire.xls import *
from spire.xls.common import *

# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]

# 插入示例数据到 A1:C4 范围
sheet.Range["A1"].NumberValue = 582
sheet.Range["A2"].NumberValue = 234
sheet.Range["A3"].NumberValue = 314
sheet.Range["A4"].NumberValue = 50
sheet.Range["B1"].NumberValue = 150
sheet.Range["B2"].NumberValue = 894
sheet.Range["B3"].NumberValue = 560
sheet.Range["B4"].NumberValue = 900
sheet.Range["C1"].NumberValue = 134
sheet.Range["C2"].NumberValue = 700
sheet.Range["C3"].NumberValue = 920
sheet.Range["C4"].NumberValue = 450

# 设置行高和列宽
sheet.AllocatedRange.RowHeight = 15
sheet.AllocatedRange.ColumnWidth = 17

# 创建第一个条件格式规则:大于 800 的值显示为红色
xcfs1 = sheet.ConditionalFormats.Add()
xcfs1.AddRange(sheet.AllocatedRange)
format1 = xcfs1.AddCondition()
format1.FormatType = ConditionalFormatType.CellValue
format1.FirstFormula = "800"
format1.Operator = ComparisonOperatorType.Greater
format1.FontColor = Color.get_Red()
format1.BackColor = Color.get_LightSalmon()

# 创建第二个条件格式规则:小于 300 的值显示为绿色
xcfs2 = sheet.ConditionalFormats.Add()
xcfs2.AddRange(sheet.AllocatedRange)
format2 = xcfs2.AddCondition()
format2.FormatType = ConditionalFormatType.CellValue
format2.FirstFormula = "300"
format2.Operator = ComparisonOperatorType.Less
format2.FontColor = Color.get_Green()
format2.BackColor = Color.get_LightBlue()

# 保存文件
workbook.Sa veToFile("CellValueFormatting.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

结果长这样:

Python轻松实现在Excel工作表中应用条件格式

这里用的是 ConditionalFormatType.CellValue 类型。通过 FirstFormula 设阈值,Operator 定义比较逻辑(大于、小于等等),再配上字体色和背景色,超标数据一眼就能认出来。

高亮重复值和唯一值

数据清洗时,重复项和唯一项经常需要特别关注。条件格式里专门有对应的功能。

下面的例子,演示了怎么让重复值变红、唯一值变黄:

from spire.xls import *
from spire.xls.common import *

# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]

# ===== 1. 写入示例数据 =====
data = [
    ["ID", "Name", "Value"],
    [1, "A", 10],
    [2, "B", 20],
    [3, "C", 10],
    [4, "D", 30],
    [5, "E", 40],
    [6, "F", 20],
    [7, "G", 50],
    [8, "H", 60],
    [9, "I", 70],
]

for r, row in enumerate(data, start=1):
    for c, value in enumerate(row, start=1):
        sheet.Range[r, c].Text = str(value)

# ===== 2. 设置列宽(可选,让演示更清晰)=====
sheet.Columns[0].ColumnWidth = 15
sheet.Columns[1].ColumnWidth = 20
sheet.Columns[2].ColumnWidth = 15

# ===== 3. 条件格式:C列(Value列)重复值 =====
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.Range["C2:C10"])
format1 = xcfs.AddCondition()
format1.FormatType = ConditionalFormatType.DuplicateValues
format1.BackColor = Color.get_IndianRed()

# ===== 4. 条件格式:C列唯一值 =====
xcfs1 = sheet.ConditionalFormats.Add()
xcfs1.AddRange(sheet.Range["C2:C10"])
format2 = xcfs1.AddCondition()
format2.FormatType = ConditionalFormatType.UniqueValues
format2.BackColor = Color.get_Yellow()

# ===== 5. 保存 =====
workbook.Sa veToFile("HighlightDuplicateUnique.xlsx", ExcelVersion.Version2010)
workbook.Dispose()

效果图:

Python轻松实现在Excel工作表中应用条件格式

这里用了两种特殊类型:DuplicateValues 标重复,UniqueValues 标唯一。在数据清洗或验证场景里,这个功能非常趁手,能快速发现录入错误或异常记录。

应用数据条可视化

数据条本质上是一种微型条形图——根据数值大小,在单元格里拉出一根长度不同的色条。数值越大,条子越长,直观得要命。

实现代码:

from spire.xls import *
from spire.xls.common import *

# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]

# 插入示例数据
sheet.Range["A1"].NumberValue = 582
sheet.Range["A2"].NumberValue = 234
sheet.Range["A3"].NumberValue = 314
sheet.Range["A4"].NumberValue = 50
sheet.Range["B1"].NumberValue = 150
sheet.Range["B2"].NumberValue = 894
sheet.Range["B3"].NumberValue = 560
sheet.Range["B4"].NumberValue = 900
sheet.Range["C1"].NumberValue = 134
sheet.Range["C2"].NumberValue = 700
sheet.Range["C3"].NumberValue = 920
sheet.Range["C4"].NumberValue = 450

# 设置单元格尺寸
sheet.AllocatedRange.RowHeight = 15
sheet.AllocatedRange.ColumnWidth = 17

# 添加数据条
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.AllocatedRange)
format = xcfs.AddCondition()
format.FormatType = ConditionalFormatType.DataBar
format.DataBar.BarColor = Color.get_CadetBlue()

# 保存文件
workbook.Sa veToFile("DataBarsFormatting.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

结果:

Python轻松实现在Excel工作表中应用条件格式

通过 ConditionalFormatType.DataBar 类型实现,DataBar.BarColor 可以自定义颜色。相比独立图表,这种方式更加轻量,适合快速比较同一组数值的相对大小。

应用图标集

图标集用预置的小符号(比如箭头、交通灯、旗帜)来给数据“贴标签”,一眼就能看出状态或等级。

下面用三色交通灯来演示:

from spire.xls import *
from spire.xls.common import *

# 创建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]

# 插入示例数据
sheet.Range["A1"].NumberValue = 582
sheet.Range["A2"].NumberValue = 234
sheet.Range["A3"].NumberValue = 314
sheet.Range["A4"].NumberValue = 50
sheet.Range["B1.NumberValue = 150
sheet.Range["B2"].NumberValue = 894
sheet.Range["B3"].NumberValue = 560
sheet.Range["B4"].NumberValue = 900
sheet.Range["C1"].NumberValue = 134  
sheet.Range["C2"].NumberValue = 700
sheet.Range["C3"].NumberValue = 920
sheet.Range["C4"].NumberValue = 450  # 原文此处C1-C4的正常缩进可能存在笔误,这里保持原文写法结构不变

# 设置单元格尺寸
sheet.AllocatedRange.RowHeight = 15
sheet.AllocatedRange.ColumnWidth = 17

# 添加图标集(三色交通灯)
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.AllocatedRange)
format = xcfs.AddCondition()
format.FormatType = ConditionalFormatType.IconSet
format.IconSet.IconSetType = IconSetType.ThreeTrafficLights1

# 保存文件
workbook.Sa veToFile("IconSetsFormatting.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

效果:

Python轻松实现在Excel工作表中应用条件格式

通过 ConditionalFormatType.IconSet 实现,IconSetType 枚举提供了很多图标风格,比如三向箭头、三个交通灯等。这在展示绩效指标、状态评估或者等级分类时特别好用,数据一目了然。

实用技巧

实际项目中,往往需要几种条件格式搭配着用:

  • 组合使用:同一个数据区域可以叠加多条条件规则,各管各的条件
  • 动态范围:用 AllocatedRange 能自动适应数据区域大小,省去硬编码的麻烦
  • 颜色选择:尽量选对比度高的配色,保证格式化后的数据易读
  • 性能考量:数据量特别大的时候,规则别搞太多,否则文件打开速度会受影响

总结

这篇内容梳理了用Python在Excel中应用条件格式的几个主要方向:单元格值条件、重复/唯一值高亮、数据条和图标集。用好它们,数据的可读性和分析效率都能往上提一个台阶。

条件格式不只局限于数值比较,也能扩展到日期、文本等多种数据类型。搭配Python的自动化能力,批量处理数据和生成报表就变得很轻松,对数据分析和业务决策来说,是个顺手又实用的工具。

本文转载于:https://www.jb51.net/python/363165fo8.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注