![](/img/trans.png)
[英]openpyxl conditional formatting - Rule is in Excel file but not the formatting
[英]How to update range of cells where Excel Conditional Formatting applies with openpyxl
我有一個 Excel 工作簿,我想使用openpyxl
更新條件格式。
可以在此處找到有關條件格式的openpyxl
文檔: https ://openpyxl.readthedocs.io/en/stable/formatting.html ...但是它僅指示如何創建條件格式而不是刪除/更新它。
我正在嘗試擴展一些規則的范圍:我有一個關於范圍A4:V4
的規則,我想將其更新為A4:V100
。
如何使用openpyxl
更新條件格式范圍?
謝謝
openpyxl
中條件格式的當前(版本 3.0.9)實現如下:
OrderedDict
(帶有順序的字典)中ConditionalFormatting
對象; 它有一個屬性sqref
用於引用范圍(一個MultiCellRange
對象,可以很容易地轉換為看起來像A4:V4
的字符串)文檔清楚地表明ws.conditional_formatting.add(<range>, <rule>)
添加規則,但您實際上可以像使用常規字典一樣訪問和刪除規則:
ws.conditional_formatting[<range>]
del ws.conditional_formatting[<range>]
更新的一種方法是刪除並再次添加(如果您想順便更新openpyxl
中的表的引用,它似乎可以工作)。
放在一起,可能看起來像這樣:
import re
from os import startfile
from openpyxl import load_workbook
wb = load_workbook(xlsx)
ws = wb["My Super Worksheet"]
range_cells = "A4:V4"
new_range = "A4:V100"
rules = ws.conditional_formatting[range_cells]
del ws.conditional_formatting[range_cells]
for rule in rules:
ws.conditional_formatting.add(new_range, rule)
wb.save()
請注意,您可以使用以下列表理解訪問條件格式的所有范圍引用:
refs_conditional_formats = [str(c.sqref) for c in ws.conditional_formatting]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.