美文网首页
Python复制Excel带有条件格式的单元格/sheet

Python复制Excel带有条件格式的单元格/sheet

作者: 技术老男孩 | 来源:发表于2023-05-07 09:38 被阅读0次

    在工作中需要完整的复制一张Excel的sheet表格,我通过wb.copy_worksheet(wb[sheet_name]),只能复制单元格格式以及内容,无法针对单元格的条件格式进行复制,查阅了网上资料以及官网文档,都不能很好的解决我的问题,然后通过Debug一步步分析openpyxl库的返回值,最终找到解决方案,以下是一些简单的步骤,以复制带有条件格式的单元格或工作表。

    步骤 1:安装必需的库

    首先,您需要安装openpyxl库,它是一个Python库,用于处理Excel文件。在命令行中运行以下命令安装库。

    pip install openpyxl
    

    步骤 2:打开Excel文件

    在Python中,可以使用openpyxl库打开和读取Excel文件。以下是一个打开Excel文件的示例代码。

    import openpyxl
    
    # 打开Excel文件
    wb = openpyxl.load_workbook('example.xlsx')
    
    # 选择工作表
    worksheet = wb['Sheet1']
    

    步骤 3:复制条件格式

    在openpyxl库中,可以使用conditional_formatting属性来添加条件格式。要复制带有条件格式的单元格或工作表,请按照以下步骤操作。

    复制单元格的条件格式

    # 复制条件格式
    # worksheet_target:需要被复制的目标sheet
    # worksheet:当前sheet
    def copyFormat(worksheet_target, worksheet):
        # 获取原有sheet规则的字典
        cf_rules: dict = worksheet_target.conditional_formatting._cf_rules
        # 遍历规则字典
        for key in cf_rules:
            # 定义单元格名称(需要添加的规则的单元格名称)
            coord = ""
            # 获取规则中的ranges(set集合)ranges包含cells等对象数据
            ranges: set = key.cells.ranges
            # 遍历ranges获取每个单元格名称
            for cellRange in ranges:
                # 将单元格名称进行组合 示例:A1:B2 B3:H5
                coord += cellRange.coord + " "
    
            # 获取规则列表
            rules = cf_rules[key]
            for rule in rules:
                # 给指定sheet添加原有单元格的规则
                worksheet.conditional_formatting.add(coord, rule)
    

    步骤4:调用该方法

    # 加载源Excel文件
    wb_src = load_workbook('source.xlsx')
    # 加载源Sheet
    ws_src = wb_src['Sheet1']
    # 加载目标Excel文件
    wb_dest = load_workbook('destination.xlsx')
    # 加载目标Sheet
    ws_dest = wb_dest['Sheet1']
    
    # 复制条件格式
    copyFormat(ws_src, ws_dest)
    
    # 保存目标Excel文件
    wb_dest.save('destination.xlsx')
    

    相关文章

      网友评论

          本文标题:Python复制Excel带有条件格式的单元格/sheet

          本文链接:https://www.haomeiwen.com/subject/fxuhsdtx.html