Python輕松實現(xiàn)在Excel工作表中應(yīng)用條件格式
在日常數(shù)據(jù)處理工作中,條件格式是一項非常實用的功能。它可以根據(jù)單元格的內(nèi)容自動應(yīng)用特定的格式,幫助用戶快速識別數(shù)據(jù)模式、突出顯示關(guān)鍵信息或發(fā)現(xiàn)異常值。通過 Python 自動化實現(xiàn)條件格式,可以大幅提高數(shù)據(jù)處理效率,特別是在處理大量數(shù)據(jù)或需要批量生成報表的場景中。
本文將介紹如何使用 Python 和 Spire.XLS 庫在 Excel 工作表中應(yīng)用多種類型的條件格式,包括基于單元格值的格式、高亮重復(fù)值和唯一值、數(shù)據(jù)條可視化以及圖標集等。
環(huán)境準備
首先,需要安裝 Spire.XLS 庫:
pip install Spire.XLS
安裝完成后,即可開始編寫代碼來實現(xiàn)條件格式功能。
基于單元格值的條件格式
最基本的條件格式類型是根據(jù)單元格的數(shù)值來應(yīng)用格式。例如,可以將大于某個閾值的單元格標記為紅色,將小于某個閾值的單元格標記為綠色。
以下示例演示如何創(chuàng)建一個包含示例數(shù)據(jù)的工作表,并應(yīng)用基于單元格值的條件格式:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 插入示例數(shù)據(jù)到 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
# 設(shè)置行高和列寬
sheet.AllocatedRange.RowHeight = 15
sheet.AllocatedRange.ColumnWidth = 17
# 創(chuàng)建第一個條件格式規(guī)則:大于 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()
# 創(chuàng)建第二個條件格式規(guī)則:小于 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.SaveToFile("CellValueFormatting.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
結(jié)果文檔:

在這個示例中,我們使用了 ConditionalFormatType.CellValue 類型來創(chuàng)建基于單元格值的條件格式。通過設(shè)置 FirstFormula 指定閾值,使用 Operator 定義比較操作符(如 Greater、Less 等),然后設(shè)置字體顏色和背景顏色。這樣可以直觀地突出顯示超出正常范圍的數(shù)據(jù)。
高亮重復(fù)值和唯一值
在數(shù)據(jù)分析過程中,經(jīng)常需要識別數(shù)據(jù)集中的重復(fù)項或唯一項。條件格式提供了專門的功能來實現(xiàn)這一點。
以下示例展示如何高亮顯示重復(fù)值和唯一值:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# ===== 1. 寫入示例數(shù)據(jù) =====
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. 設(shè)置列寬(可選,讓演示更清晰)=====
sheet.Columns[0].ColumnWidth = 15
sheet.Columns[1].ColumnWidth = 20
sheet.Columns[2].ColumnWidth = 15
# ===== 3. 條件格式:C列(Value列)重復(fù)值 =====
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.SaveToFile("HighlightDuplicateUnique.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
結(jié)果文檔:

這里使用了兩種特殊的條件格式類型:ConditionalFormatType.DuplicateValues 用于標識重復(fù)值,ConditionalFormatType.UniqueValues 用于標識唯一值。這種功能在數(shù)據(jù)清洗和驗證場景中非常有用,可以快速發(fā)現(xiàn)數(shù)據(jù)錄入錯誤或異常記錄。
應(yīng)用數(shù)據(jù)條可視化
數(shù)據(jù)條是一種直觀的可視化方式,它通過在單元格內(nèi)顯示條形圖來表示數(shù)值的相對大小。數(shù)值越大,條形越長。
以下是應(yīng)用數(shù)據(jù)條的示例代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 插入示例數(shù)據(jù)
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
# 設(shè)置單元格尺寸
sheet.AllocatedRange.RowHeight = 15
sheet.AllocatedRange.ColumnWidth = 17
# 添加數(shù)據(jù)條
xcfs = sheet.ConditionalFormats.Add()
xcfs.AddRange(sheet.AllocatedRange)
format = xcfs.AddCondition()
format.FormatType = ConditionalFormatType.DataBar
format.DataBar.BarColor = Color.get_CadetBlue()
# 保存文件
workbook.SaveToFile("DataBarsFormatting.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
結(jié)果文檔:

數(shù)據(jù)條功能通過 ConditionalFormatType.DataBar 類型實現(xiàn)。可以通過 DataBar.BarColor 屬性自定義條形的顏色。這種可視化方式特別適合用于快速比較一組數(shù)值的大小關(guān)系,無需創(chuàng)建單獨的圖表。
應(yīng)用圖標集
圖標集是另一種強大的條件格式工具,它使用預(yù)定義的圖標(如箭頭、交通燈、旗幟等)來表示數(shù)據(jù)的狀態(tài)或等級。
以下示例展示如何應(yīng)用交通燈圖標集:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
# 插入示例數(shù)據(jù)
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
# 設(shè)置單元格尺寸
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.SaveToFile("IconSetsFormatting.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
結(jié)果文檔:

圖標集通過 ConditionalFormatType.IconSet 類型實現(xiàn)。IconSetType 枚舉提供了多種圖標樣式選擇,如 ThreeTrafficLights1(三色交通燈)、ThreeArrows(三向箭頭)等。圖標集常用于表示性能指標、狀態(tài)評估或等級分類,使數(shù)據(jù)更加直觀易懂。
實用技巧
在實際應(yīng)用中,可以結(jié)合多種條件格式類型來實現(xiàn)更復(fù)雜的數(shù)據(jù)可視化需求:
- 組合使用:可以在同一數(shù)據(jù)區(qū)域應(yīng)用多個條件格式規(guī)則,每個規(guī)則針對不同的條件
- 動態(tài)范圍:使用
AllocatedRange可以自動適應(yīng)數(shù)據(jù)區(qū)域的大小,避免硬編碼單元格范圍 - 顏色選擇:選擇對比度明顯的顏色組合,確保格式化后的數(shù)據(jù)易于閱讀
- 性能考慮:對于大型數(shù)據(jù)集,應(yīng)合理使用條件格式,避免過多的規(guī)則影響文件打開速度
總結(jié)
本文介紹了使用 Python 在 Excel 中應(yīng)用條件格式的幾種主要方法,包括基于單元格值的格式、重復(fù)值和唯一值高亮、數(shù)據(jù)條可視化以及圖標集應(yīng)用。通過這些技術(shù),可以顯著提升數(shù)據(jù)的可讀性和分析效率。
條件格式不僅可以應(yīng)用于簡單的數(shù)值比較,還可以擴展到日期、文本等多種數(shù)據(jù)類型。結(jié)合 Python 的自動化能力,可以輕松實現(xiàn)批量數(shù)據(jù)處理和報表生成,為數(shù)據(jù)分析和業(yè)務(wù)決策提供有力支持。
到此這篇關(guān)于Python輕松實現(xiàn)在Excel工作表中應(yīng)用條件格式的文章就介紹到這了,更多相關(guān)Python Excel應(yīng)用條件格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Tkinter和matplotlib兩種方式畫餅狀圖的實例
下面小編就為大家?guī)硪黄肨kinter和matplotlib兩種方式畫餅狀圖的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望對大家有所幫助2017-11-11
Python3爬蟲里關(guān)于Splash負載均衡配置詳解
在本篇文章里小編給大家分享了關(guān)于Python3爬蟲里關(guān)于Splash負載均衡配置的相關(guān)內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-07-07
Python使用sql語句對mysql數(shù)據(jù)庫多條件模糊查詢的思路詳解
這篇文章主要介紹了Python使用sql語句對mysql數(shù)據(jù)庫多條件模糊查詢的思路詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
Python Django中的STATIC_URL 設(shè)置和使用方式
這篇文章主要介紹了Python Django中的STATIC_URL 設(shè)置和使用方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python多方式分支switch?case實現(xiàn)舉例詳解
在許多編程語言(如?C、Java)中,switch-case是處理多分支條件的常用語法,這篇文章主要介紹了Python多方式分支switch?case實現(xiàn)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-06-06
Python基礎(chǔ)教程之增加和去除數(shù)字的千位分隔符
千位分隔符其實就是數(shù)字中的逗號,下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之增加和去除數(shù)字的千位分隔符,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-01-01

