发布于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()
结果长这样:

这里用的是 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()
效果图:

这里用了两种特殊类型: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()
结果:

通过 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()
效果:

通过 ConditionalFormatType.IconSet 实现,IconSetType 枚举提供了很多图标风格,比如三向箭头、三个交通灯等。这在展示绩效指标、状态评估或者等级分类时特别好用,数据一目了然。
实际项目中,往往需要几种条件格式搭配着用:
AllocatedRange 能自动适应数据区域大小,省去硬编码的麻烦这篇内容梳理了用Python在Excel中应用条件格式的几个主要方向:单元格值条件、重复/唯一值高亮、数据条和图标集。用好它们,数据的可读性和分析效率都能往上提一个台阶。
条件格式不只局限于数值比较,也能扩展到日期、文本等多种数据类型。搭配Python的自动化能力,批量处理数据和生成报表就变得很轻松,对数据分析和业务决策来说,是个顺手又实用的工具。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8