发布于2026-06-01 阅读(0)
扫一扫,手机访问
处理海量数据的时候,能快速定位并标出关键信息,绝对是一项硬核技能。高亮显示特定的数据点,能让数据审查、分析和决策效率直接上一个台阶。不管是标记异常值、突出重要指标,还是识别重复数据,条件格式化和查找高亮功能都能让数据变得一目了然。
这篇文章会详细展开如何借助 Spire.XLS for Python 这个库,在 Excel 中查找数据并进行高亮显示。内容会覆盖基于文本查找的高亮、条件格式化高亮,还有几种常规和进阶的智能高亮技巧,希望能帮你搭起一套完整的数据可视化方案。
动手之前,先把 Spire.XLS for Python 库装上。用 pip 命令搞定就行:
pip install Spire.XLS
装好之后,就可以在 Python 项目里用这个库操作 Excel 文档,执行查找和高亮的工作了。
在实际工作中,Excel 的查找并高亮功能用得很广,比如:
Spire.XLS for Python 主要提供了两种高亮方法:一是直接设置单元格背景色,二是使用条件格式化。前者适合静态高亮,后者则可以随数据变化自动更新高亮效果。
先说说最基础的搜索高亮操作:在表格里找特定文本,然后给找到的单元格设置背景颜色。看这个例子:
from spire.xls import *
from spire.xls.common import *def FindAndHighlightText():
"""查找特定文本并高亮显示"""
inputFile = "/input/销售报告.xlsx"
outputFile = "/output/FindAndHighlight.xlsx"
# 创建工作簿对象
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile(inputFile)
# 获取第一个工作表
worksheet = workbook.Worksheets[0]
# 查找所有包含 "Total" 的单元格
# 参数说明:搜索文本,区分大小写,完全匹配
ranges = worksheet.FindAllString("缺货", True, True)
# 遍历所有找到的单元格并高亮显示
for range in ranges:
# 设置背景颜色为黄色
range.Style.Color = Color.get_Yellow()
# 保存文件
workbook.Sa veToFile(outputFile, ExcelVersion.Version2010)
workbook.Dispose()if __name__ == "__main__":
FindAndHighlightText()
在这个例子里,我们用 FindAllString() 方法查找所有匹配的单元格,前两个布尔参数控制是否区分大小写和是否完全匹配。返回的是一个单元格范围集合,遍历这个集合,给每个单元格设上背景色就行了。
这种方法简单直接,适合一次性高亮操作。高亮效果会永久保存在文件里,数据变了它也不会跟着变。
条件格式化是一种更智能的高亮方式,根据数据的实际值动态应用格式。下面这个例子展示了如何用条件格式化高亮显示最高和最低的数值:
from spire.xls import *
from spire.xls.common import *def HighlightRankedValues():
"""高亮显示排名前后的值"""
inputFile = "/input/销售报告.xlsx"
outputFile = "/HighlightRankedValues.xlsx"
# 创建工作簿
workbook = Workbook()
# 从磁盘加载文件
workbook.LoadFromFile(inputFile)
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 应用条件格式化到范围 "B3:B16",高亮前 2 个最大值
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.Range["B3:B16"])
# 添加前 N 个值的条件
format1 = xcfs.AddTopBottomCondition(TopBottomType.Top, 2)
format1.FormatType = ConditionalFormatType.TopBottom
# 设置背景颜色为红色
format1.BackColor = Color.get_Red()
# 应用条件格式化到范围 "E3:E16",高亮后 2 个最小值
xcfs1 = sheet.ConditionalFormats.Add()
xcfs1.AddRange(sheet.Range["E3:E16"])
# 添加后 N 个值的条件
format2 = xcfs1.AddTopBottomCondition(TopBottomType.Bottom, 2)
format2.FormatType = ConditionalFormatType.TopBottom
# 设置背景颜色为森林绿
format2.BackColor = Color.get_ForestGreen()
# 保存文件
workbook.Sa veToFile(outputFile, ExcelVersion.Version2010)
workbook.Dispose()if __name__ == "__main__":
HighlightRankedValues()

这个例子展示了条件格式化的威力。通过 AddTopBottomCondition() 方法,可以指定要高亮最大值还是最小值,以及要高亮的数量。跟直接设背景色不同,条件格式化是动态的:数据一变,高亮会自动调整到新的最高或最低值。
这种方法特别适合销售数据分析、成绩排名、性能评估这类场景,能自动把表现最好和最差的项目标出来。
数据清理和验证的时候,识别重复数据和唯一数据是个基本动作。看这个例子:
from spire.xls import *
from spire.xls.common import *def HighlightDuplicateAndUnique():
"""高亮显示重复值和唯一值"""
inputFile = "/input/销售报告.xlsx"
outputFile = "/HighlightDuplicateUniqueValues.xlsx"
# 创建工作簿
workbook = Workbook()
# 加载文件
workbook.LoadFromFile(inputFile)
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 使用条件格式化高亮范围 "C3:C16" 中的重复值
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.Range["C3:C16"])
# 添加重复值条件
format1 = xcfs.AddCondition()
format1.FormatType = ConditionalFormatType.DuplicateValues
# 设置重复值的背景颜色为印度红
format1.BackColor = Color.get_IndianRed()
# 使用条件格式化高亮范围 "H3:H16" 中的唯一值
xcfs1 = sheet.ConditionalFormats.Add()
xcfs1.AddRange(sheet.Range["H3:H16"])
# 添加唯一值条件
format2 = xcfs1.AddCondition()
format2.FormatType = ConditionalFormatType.UniqueValues
# 设置唯一值的背景颜色为黄色
format2.BackColor = Color.get_Yellow()
# 保存文件
workbook.Sa veToFile(outputFile, ExcelVersion.Version2010)
workbook.Dispose()if __name__ == "__main__":
HighlightDuplicateAndUnique()
这个例子展示了如何用 ConditionalFormatType.DuplicateValues 和 ConditionalFormatType.UniqueValues 分别高亮重复值和唯一值。数据清理时,能帮你快速发现重复录入的记录;分析场景下,唯一值高亮则能帮你识别那些稀有的数据点。
需要注意,条件格式化可以同时应用于同一个范围,所以重复值和唯一值可以在同一列中用不同的颜色同时显示出来。
统计分析里,搞清楚哪些数据点高于或低于平均水平,价值很高。下面这个例子就展示了怎么实现:
from spire.xls import *
from spire.xls.common import *def HighlightA verageValues():
"""高亮显示高于或低于平均值的数据"""
inputFile = "/销售报告.xlsx"
outputFile = "HighlightA verageValues.xlsx"
# 创建工作簿
workbook = Workbook()
# 加载文件
workbook.LoadFromFile(inputFile)
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 添加条件格式化以高亮低于平均值的数据
format1 = sheet.ConditionalFormats.Add()
# 设置要应用格式化的单元格范围
format1.AddRange(sheet.Range["E2:E10"])
# 添加低于平均值的条件
cf1 = format1.AddA verageCondition(A verageType.Below)
# 设置低于平均值的单元格背景颜色为天蓝色
cf1.BackColor = Color.get_SkyBlue()
# 添加条件格式化以高亮高于平均值的数据
format2 = sheet.ConditionalFormats.Add()
# 设置要应用格式化的单元格范围
format2.AddRange(sheet.Range["E2:E10"])
# 添加高于平均值的条件
cf2 = format2.AddA verageCondition(A verageType.Above)
# 设置高于平均值的单元格背景颜色为橙色
cf2.BackColor = Color.get_Orange()
# 保存文件
workbook.Sa veToFile(outputFile, ExcelVersion.Version2010)
workbook.Dispose()
print(f"平均值高亮完成,文件已保存至: {outputFile}")if __name__ == "__main__":
HighlightA verageValues()
这个例子用 AddA verageCondition() 方法来创建基于平均值比较的条件格式化。A verageType.Below 表示低于平均值,A verageType.Above 表示高于平均值。这个方法在数据分析中很实用,可以快速找出表现优于或劣于平均水平的数据点。
比方说,用这个方法可以快速看出哪些产品的销售额高于或低于平均水平;在学生成绩分析里,也能立刻分清楚哪些学生成绩高于或低于班级平均分。
实际应用里,往往需要结合文本查找和条件格式化来实现更复杂的高亮逻辑。下面这个工具类,就把这些功能封装在了一起:
from spire.xls import *
from spire.xls.common import *class ExcelHighlighter:
"""Excel 高亮显示工具类"""
def __init__(self, input_file):
"""初始化并加载工作簿"""
self.workbook = Workbook()
self.workbook.LoadFromFile(input_file)
self.input_file = input_file
def highlight_by_text(self, sheet_index, search_text,
back_color=None, case_sensitive=False,
exact_match=False):
"""通过文本查找并高亮"""
sheet = self.workbook.Worksheets[sheet_index]
# 查找所有匹配的单元格
ranges = sheet.FindAllString(search_text, case_sensitive, exact_match)
# 设置默认背景颜色
if back_color is None:
back_color = Color.get_Yellow()
highlight_count = 0
for range in ranges:
range.Style.Color = back_color
highlight_count += 1
print(f"工作表 '{sheet.Name}': 高亮了 {highlight_count} 个包含 '{search_text}' 的单元格")
return highlight_count
def highlight_top_values(self, sheet_index, cell_range, top_count=5,
back_color=None):
"""高亮前 N 个最大值"""
sheet = self.workbook.Worksheets[sheet_index]
if back_color is None:
back_color = Color.get_Red()
# 添加条件格式化
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.Range[cell_range])
format_rule = xcfs.AddTopBottomCondition(TopBottomType.Top, top_count)
format_rule.FormatType = ConditionalFormatType.TopBottom
format_rule.BackColor = back_color
print(f"工作表 '{sheet.Name}': 在范围 {cell_range} 中高亮前 {top_count} 个最大值")
def highlight_bottom_values(self, sheet_index, cell_range, bottom_count=5,
back_color=None):
"""高亮后 N 个最小值"""
sheet = self.workbook.Worksheets[sheet_index]
if back_color is None:
back_color = Color.get_ForestGreen()
# 添加条件格式化
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.Range[cell_range])
format_rule = xcfs.AddTopBottomCondition(TopBottomType.Bottom, bottom_count)
format_rule.FormatType = ConditionalFormatType.TopBottom
format_rule.BackColor = back_color
print(f"工作表 '{sheet.Name}': 在范围 {cell_range} 中高亮后 {bottom_count} 个最小值")
def highlight_duplicates(self, sheet_index, cell_range,
duplicate_color=None, unique_color=None):
"""高亮重复值和唯一值"""
sheet = self.workbook.Worksheets[sheet_index]
# 如果提供了重复颜色和唯一颜色,则分别设置;否则使用默认值
if duplicate_color is None:
duplicate_color = Color.get_IndianRed()
if unique_color is None:
unique_color = Color.get_Yellow()
# 高亮重复值
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.Range[cell_range])
format1 = xcfs.AddCondition()
format1.FormatType = ConditionalFormatType.DuplicateValues
format1.BackColor = duplicate_color
# 高亮唯一值
xcfs1 = sheet.ConditionalFormats.Add()
xcfs1.AddRange(sheet.Range[cell_range])
format2 = xcfs1.AddCondition()
format2.FormatType = ConditionalFormatType.UniqueValues
format2.BackColor = unique_color
print(f"工作表 '{sheet.Name}': 在范围 {cell_range} 中高亮重复值和唯一值")
def highlight_above_below_a verage(self, sheet_index, cell_range,
above_color=None, below_color=None):
"""高亮高于和低于平均值的数据"""
sheet = self.workbook.Worksheets[sheet_index]
if above_color is None:
above_color = Color.get_Orange()
if below_color is None:# 高亮高于平均值
format1 = sheet.ConditionalFormats.Add()
format1.AddRange(sheet.Range[cell_range])
cf1 = format1.AddA verageCondition(A verageType.Above)
cf1.BackColor = above_color
# 高亮低于平均值
format2 = sheet.ConditionalFormats.Add()
format2.AddRange(sheet.Range[cell_range])
cf2 = format2.AddA verageCondition(A verageType.Below)
cf2.BackColor = below_color
print(f"工作表 '{sheet.Name}': 在范围 {cell_range} 中高亮高于和低于平均值的数据")
def sa ve(self, output_file=None):
"""保存工作簿"""
if output_file is None:
output_file = self.input_file
self.workbook.Sa veToFile(output_file, ExcelVersion.Version2013)
self.workbook.Dispose()
print(f"文件已保存至: {output_file}")def main():
input_file = "/SampleData.xlsx"
# 创建高亮工具实例
highlighter = ExcelHighlighter(input_file)
# 示例 1: 高亮包含特定文本的单元格
highlighter.highlight_by_text(0, "重要", Color.get_Yellow())
# 示例 2: 高亮前 3 个最大值
highlighter.highlight_top_values(0, "D2:D20", 3, Color.get_Red())
# 示例 3: 高亮后 3 个最小值
highlighter.highlight_bottom_values(0, "E2:E20", 3, Color.get_Green())
# 示例 4: 高亮重复值
highlighter.highlight_duplicates(0, "C2:C20")
# 示例 5: 高亮高于/低于平均值
highlighter.highlight_above_below_a verage(0, "F2:F20")
# 保存文件
highlighter.sa ve("./Output/HighlightedData.xlsx")if __name__ == "__main__":
main()
这个工具类封装了文本查找高亮、排名高亮、重复值高亮和平均值高亮等多种功能。通过实例化这个类,可以很轻松地在项目中复用这些功能,并根据需要组合使用不同的高亮方法。
def ReviewSalesData():
"""审查销售数据"""
highlighter = ExcelHighlighter("./Data/SalesReport.xlsx")
# 高亮所有包含"紧急"标记的订单
highlighter.highlight_by_text(0, "紧急", Color.get_Orange())
# 高亮销售额前 10 名的产品
highlighter.highlight_top_values(0, "D2:D100", 10, Color.get_LightGreen())
# 高亮销售额低于平均水平的产品
format1 = highlighter.workbook.Worksheets[0].ConditionalFormats.Add()
format1.AddRange(highlighter.workbook.Worksheets[0].Range["D2:D100"])
cf1 = format1.AddA verageCondition(A verageType.Below)
cf1.BackColor = Color.get_LightCoral()
highlighter.sa ve("./Output/SalesReview.xlsx")
def AnalyzeStudentGrades():
"""分析学生成绩"""
highlighter = ExcelHighlighter("./Data/StudentGrades.xlsx")
# 高亮不及格的学生(查找包含"F"的成绩)
highlighter.highlight_by_text(0, "F", Color.get_Red())
# 高亮前 5 名优秀学生
highlighter.highlight_top_values(0, "C2:C50", 5, Color.get_Gold())
# 高亮低于班级平均分的学生
highlighter.highlight_above_below_a verage(0, "C2:C50")
highlighter.sa ve("./Output/GradeAnalysis.xlsx")
def ManageInventory():
"""管理库存数据"""
highlighter = ExcelHighlighter("./Data/Inventory.xlsx")
# 高亮库存为零的产品
highlighter.highlight_by_text(0, "0", Color.get_Red())
# 高亮库存量最低的 10 种产品
highlighter.highlight_bottom_values(0, "D2:D200", 10, Color.get_Yellow())
# 高亮重复的产品编号
highlighter.highlight_duplicates(0, "A2:A200")
highlighter.sa ve("./Output/InventoryReview.xlsx")
range.Style.Color 直接设置背景色,适合一次性操作。Dispose() 方法。问题 1:高亮颜色不明显
解决方案:选择对比度高的颜色,或者同时设置字体颜色和背景颜色。
问题 2:条件格式化不生效
解决方案:检查单元格范围是否正确,确保数据类型匹配(文本 vs 数字)。
问题 3:文件体积过大
解决方案:减少条件格式化规则的数量,避免在大范围应用复杂的条件格式化。
这篇文章深入过了利用 Spire.XLS for Python 在 Excel 中查找并高亮显示数据的几种高效方法,目标就是提升数据可视化与分析的效率。实际用起来,开发者既可以通过 FindAllString() 方法精准定位特定文本并直接设背景色高亮,也能利用条件格式化实现数据变化时的动态更新。面对更复杂的数据分析需求,这个库还提供了丰富的条件规则:比如用 AddTopBottomCondition() 快速锁定排名前后的核心数值,用 DuplicateValues 和 UniqueValues 自动识别重复或唯一的数据,以及借 AddA verageCondition() 直观呈现高于或低于平均值的异常情况。通过封装工具类,还能进一步实现更具灵活性的高亮操作与批量处理。全面掌握这些核心技能,应该能帮你在数据审查、业务分析以及质量控制这类实际场景里游刃有余,真正把工作效率提上去。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8