簡體   English   中英

如何使用openpyxl更新適用Excel條件格式的單元格范圍

[英]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)實現如下:

  1. 條件格式存儲在OrderedDict (帶有順序的字典)中
  2. 鍵是ConditionalFormatting對象; 它有一個屬性sqref用於引用范圍(一個MultiCellRange對象,可以很容易地轉換為看起來像A4:V4的字符串)
  3. 此字典的值是應用於此范圍的規則列表

文檔清楚地表明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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM