最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python代碼操作Excel條件格式的實(shí)戰(zhàn)指南

 更新時間:2026年03月20日 11:52:34   作者:站大爺IP  
用代碼操作Excel條件格式,本質(zhì)上就是把你手動點(diǎn)鼠標(biāo)的步驟寫成腳本,數(shù)據(jù)更新了,腳本跑一遍,格式自動生成,下面我們就來看看具體的實(shí)現(xiàn)方法吧

?

周一早上九點(diǎn),你的郵箱被各種報表塞滿。

打開財務(wù)發(fā)來的季度銷售數(shù)據(jù),幾千行數(shù)字?jǐn)D在屏幕上,眼睛掃過去一片黑壓壓。老板在旁邊等著匯報,問你這個季度哪個產(chǎn)品賣得最好、哪些區(qū)域掉得厲害。你拿著鼠標(biāo)劃來劃去,半天找不出個所以然。

這場景,但凡用Excel干過活的人都懂——數(shù)據(jù)有了,但看不見。

條件格式就是干這個用的。它能讓數(shù)字“開口說話”:高于平均值的自動標(biāo)綠,低于警戒線的自動飄紅,重復(fù)值、排名、異常點(diǎn)一眼掃過去清清楚楚。但問題來了,每月、每周甚至每天都要手動重復(fù)這些操作,時間全耗在“格式化”上了。

Python能幫你解決這個麻煩。

用代碼操作Excel條件格式,本質(zhì)上就是把你手動點(diǎn)鼠標(biāo)的步驟寫成腳本。數(shù)據(jù)更新了,腳本跑一遍,格式自動生成。市面上主流的幾個庫——openpyxl、xlsxwriter、Spire.XLS——各有各的脾氣,選對了工具,事半功倍。

一、openpyxl:最接地氣的全能選手

openpyxl是處理Excel最常用的庫,讀寫都支持,對條件格式的支持也比較完善。它的設(shè)計思路很符合直覺:先定規(guī)則,再上格式。

比如你想把成績表里不及格(小于60分)的單元格標(biāo)紅,代碼可以這么寫:

from openpyxl import load_workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule

wb = load_workbook('成績表.xlsx')
ws = wb.active

# 定義紅色填充
red_fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid')

# 添加條件格式規(guī)則:單元格值小于60
ws.conditional_formatting.add('B2:B100', 
                              CellIsRule(operator='lessThan', 
                                        formula=['60'], 
                                        fill=red_fill))

wb.save('成績表_格式化.xlsx')

這段代碼干的事,和你手動點(diǎn)“條件格式>突出顯示單元格規(guī)則>小于”一模一樣,區(qū)別在于——下次再來100份報表,它也能一秒干完。

openpyxl支持的規(guī)則類型不少:CellIsRule(基于值)、FormulaRule(基于公式)、ColorScaleRule(色階)、IconSetRule(圖標(biāo)集)、DataBarRule(數(shù)據(jù)條)都有。想做復(fù)雜點(diǎn)的邏輯,比如“既要大于平均線,又要屬于前10%”,用公式規(guī)則就能搞定。

有個坑得提醒你:openpyxl在讀取帶條件格式的現(xiàn)有文件時,規(guī)則信息可能會丟失。所以用它創(chuàng)建格式?jīng)]問題,但別指望完美讀取別人設(shè)好的規(guī)則。

二、xlsxwriter:寫報表的一把好手

如果你只需要“生成”報表,不需要修改已有文件,xlsxwriter是更輕量級的選擇。它專注于寫入,功能純粹,性能也不錯。

xlsxwriter的語法有點(diǎn)不一樣,用的是字典傳參:

import xlsxwriter

workbook = xlsxwriter.Workbook('銷售報表.xlsx')
worksheet = workbook.add_worksheet()

# 準(zhǔn)備數(shù)據(jù)
data = [320, 450, 280, 490, 350, 420, 380]
worksheet.write_column('A1', data)

# 定義兩種格式
green_format = workbook.add_format({'bg_color': 'green'})
red_format = workbook.add_format({'bg_color': 'red'})

# 設(shè)置條件格式:大于400標(biāo)綠,小于等于400標(biāo)紅
worksheet.conditional_format('A1:A7', {'type': 'cell',
                                        'criteria': '>',
                                        'value': 400,
                                        'format': green_format})
worksheet.conditional_format('A1:A7', {'type': 'cell',
                                        'criteria': '<=',
                                        'value': 400,
                                        'format': red_format})

workbook.close()

xlsxwriter最實(shí)用的功能之一是配合pandas用。你拿pandas做完數(shù)據(jù)處理,直接用pd.ExcelWriter指定xlsxwriter引擎,然后調(diào)用條件格式方法,數(shù)據(jù)分析+報表生成一條龍。

import pandas as pd

df = pd.DataFrame({'銷售額': [320, 450, 280, 490, 350]})

writer = pd.ExcelWriter('報表.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='銷售數(shù)據(jù)', index=False)

workbook = writer.book
worksheet = writer.sheets['銷售數(shù)據(jù)']

# 對B列(銷售額)應(yīng)用三色階
worksheet.conditional_format('B2:B6', {'type': '3_color_scale'})

writer.close()

xlsxwriter不支持讀取已有文件,也不能修改。但如果你是從零開始建報表,它夠快、夠穩(wěn)、夠干凈。

三、Spire.XLS:商業(yè)級功能的代表

Spire.XLS是個商業(yè)庫,功能覆蓋面比前兩個更廣。它的API設(shè)計更接近Excel本身的邏輯,支持的操作也更多——比如設(shè)置公式條件、處理跨工作表引用、精細(xì)化控制格式選項。

有些場景下,用前兩個庫實(shí)現(xiàn)起來比較費(fèi)勁,比如“隔行變色”這種需求。用Spire.XLS可以寫得很直白:

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

workbook = Workbook()
workbook.LoadFromFile("數(shù)據(jù).xlsx")
sheet = workbook.Worksheets[0]

# 添加條件格式
conditionalFormat = sheet.ConditionalFormats.Add()
conditionalFormat.AddRange(sheet.Range[2, 1, sheet.LastRow, sheet.LastColumn])

# 偶數(shù)行設(shè)白色背景
condition1 = conditionalFormat.AddCondition()
condition1.FirstFormula = "=MOD(ROW(),2)=0"
condition1.FormatType = ConditionalFormatType.Formula
condition1.BackColor = Color.get_White()

# 奇數(shù)行設(shè)淺灰背景
condition2 = conditionalFormat.AddCondition()
condition2.FirstFormula = "=MOD(ROW(),2)=1"
condition2.FormatType = ConditionalFormatType.Formula
condition2.BackColor = Color.get_LightGray()

workbook.SaveToFile("隔行變色.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Spire.XLS還支持一些“開箱即用”的高級功能:Top/Bottom規(guī)則、高于/低于平均值、介于兩個數(shù)之間。這些在Excel里是內(nèi)置選項,用openpyxl得繞個彎,用Spire.XLS直接調(diào)方法就行。

不過它是收費(fèi)庫,有30天試用期。項目預(yù)算夠、追求開發(fā)效率的情況下可以考慮。

四、怎么選?看你的場景

三個庫沒有絕對的好壞,關(guān)鍵看你想干什么。

openpyxl最適合“既要讀又要寫”的場景。你需要修改現(xiàn)有文件、保留原有內(nèi)容、同時添加新格式,用它最穩(wěn)妥。社區(qū)活躍,遇到問題好搜答案。

xlsxwriter適合“純生成”的場景。跑數(shù)據(jù)分析腳本,自動輸出帶格式的報表,發(fā)給老板或客戶。性能好,文件體積控制得也不錯。配合pandas用,體驗(yàn)很順。

Spire.XLS適合復(fù)雜格式需求的場景。要做多條件嵌套、大量使用公式規(guī)則、或者嫌自己造輪子太麻煩。商業(yè)環(huán)境、預(yù)算允許的情況下,能省不少開發(fā)時間。

五、幾個實(shí)戰(zhàn)技巧

  • 公式規(guī)則里,引用要寫對。在條件格式里用公式,注意相對引用和絕對引用。=A1>100是針對每個單元格判斷,=A$1>100就變成全跟第一行比。
  • 規(guī)則有順序。Excel按規(guī)則添加順序執(zhí)行,后面的規(guī)則可能覆蓋前面的。代碼里添加規(guī)則的順序,就是最終生效的順序。
  • 別貪多。一個工作表里規(guī)則太多,文件打開會卡。能用一兩條規(guī)則解決的,別繞復(fù)雜邏輯。
  • 先清空再添加。如果反復(fù)運(yùn)行腳本,記得先刪掉舊規(guī)則再添新的,不然會疊加上去,結(jié)果亂套。

回到開頭那個周一早上的場景。

用Python寫完條件格式腳本之后,你只需要把新季度數(shù)據(jù)拖進(jìn)文件夾,雙擊運(yùn)行。再打開Excel時,銷售冠軍已經(jīng)標(biāo)成綠色,下滑區(qū)域標(biāo)成橙色,異常值標(biāo)成紅色。老板指著屏幕問“這個月怎么回事”,你三秒就能找到問題出在哪。

那多出來的半小時,不用再對著黑壓壓的數(shù)字發(fā)呆。

以上就是Python代碼操作Excel條件格式的實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于Python操作Excel條件格式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

无锡市| 北川| 鹿邑县| 台北市| 郑州市| 永吉县| 嫩江县| 邵东县| 武威市| 密云县| 原阳县| 古蔺县| 合江县| 垦利县| 长乐市| 梧州市| 罗平县| 隆回县| 徐汇区| 阿勒泰市| 台北县| 澄迈县| 商洛市| 云林县| 盐源县| 镇巴县| 武胜县| 东台市| 土默特右旗| 阳曲县| 瓮安县| 伊金霍洛旗| 资中县| 清水河县| 和平区| 龙山县| 大厂| 桐乡市| 晴隆县| 馆陶县| 株洲市|