Python復(fù)制Excel帶有條件格式的單元格/sheet

在工作中需要完整的復(fù)制一張Excel的sheet表格,我通過wb.copy_worksheet(wb[sheet_name]),只能復(fù)制單元格格式以及內(nèi)容,無法針對單元格的條件格式進(jìn)行復(fù)制,查閱了網(wǎng)上資料以及官網(wǎng)文檔,都不能很好的解決我的問題,然后通過Debug一步步分析openpyxl庫的返回值,最終找到解決方案,以下是一些簡單的步驟,以復(fù)制帶有條件格式的單元格或工作表。

步驟 1:安裝必需的庫

首先,您需要安裝openpyxl庫,它是一個(gè)Python庫,用于處理Excel文件。在命令行中運(yùn)行以下命令安裝庫。

pip install openpyxl

步驟 2:打開Excel文件

在Python中,可以使用openpyxl庫打開和讀取Excel文件。以下是一個(gè)打開Excel文件的示例代碼。

import openpyxl

# 打開Excel文件
wb = openpyxl.load_workbook('example.xlsx')

# 選擇工作表
worksheet = wb['Sheet1']

步驟 3:復(fù)制條件格式

在openpyxl庫中,可以使用conditional_formatting屬性來添加條件格式。要復(fù)制帶有條件格式的單元格或工作表,請按照以下步驟操作。

復(fù)制單元格的條件格式

# 復(fù)制條件格式
# worksheet_target:需要被復(fù)制的目標(biāo)sheet
# worksheet:當(dāng)前sheet
def copyFormat(worksheet_target, worksheet):
    # 獲取原有sheet規(guī)則的字典
    cf_rules: dict = worksheet_target.conditional_formatting._cf_rules
    # 遍歷規(guī)則字典
    for key in cf_rules:
        # 定義單元格名稱(需要添加的規(guī)則的單元格名稱)
        coord = ""
        # 獲取規(guī)則中的ranges(set集合)ranges包含cells等對象數(shù)據(jù)
        ranges: set = key.cells.ranges
        # 遍歷ranges獲取每個(gè)單元格名稱
        for cellRange in ranges:
            # 將單元格名稱進(jìn)行組合 示例:A1:B2 B3:H5
            coord += cellRange.coord + " "

        # 獲取規(guī)則列表
        rules = cf_rules[key]
        for rule in rules:
            # 給指定sheet添加原有單元格的規(guī)則
            worksheet.conditional_formatting.add(coord, rule)

步驟4:調(diào)用該方法

# 加載源Excel文件
wb_src = load_workbook('source.xlsx')
# 加載源Sheet
ws_src = wb_src['Sheet1']
# 加載目標(biāo)Excel文件
wb_dest = load_workbook('destination.xlsx')
# 加載目標(biāo)Sheet
ws_dest = wb_dest['Sheet1']

# 復(fù)制條件格式
copyFormat(ws_src, ws_dest)

# 保存目標(biāo)Excel文件
wb_dest.save('destination.xlsx')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容