python自动化第一篇—— 带图文的execl的自动化合并

简述

  最近接到一个需求,需要为公司里的一个部门提供一个文件上传自动化合并的系统,以供用户稽核,谈到自动化,肯定是选择python,毕竟python的轮子多。比较了市面上几个用得多的python库,我最终选择了xlwings。但不妨我们来比较另外的库,openpyxl。pandas当然很棒,但pandas是数据分析的专家,用在这里不太合适。

正文

环境

  python3.10.13和office16。吐糟一下,openpyxl和xlwings都需要调用微软的execl接口,wps不支持,麻烦。

openpyxl

    我开始是首先想尝试用openpyxl,但发现openpyxl无法复制图像,所以我放弃了,但代码顺便贴上来,有需要自取。

from openpyxl import load_workbook

# 定义要合并的Excel文件列表和对应的工作表名称
excel_files = {
    'file1.xlsx': 'Sheet1',
    'file2.xlsx': 'Sheet2',
    'file3.xlsx': 'Sheet3'
}

# 创建一个新的Excel文件
merged_book = None

# 循环遍历每个Excel文件
for file, sheet_name in excel_files.items():
    # 打开要复制的Excel文件
    book = load_workbook(file)
    
    # 复制每个工作表到新的Excel文件的对应工作表
    for source_sheet in book.sheetnames:
        source_sheet = book[source_sheet]
        
        if merged_book is None:
            # 如果是第一个文件,直接复制工作表到新的Excel文件
            merged_book = load_workbook(file)
            target_sheet = merged_book[sheet_name]
        else:
            # 如果不是第一个文件,创建新的工作表,并复制工作表的内容到新的工作表
            target_sheet = merged_book.create_sheet(title=sheet_name)
            
            for row in source_sheet.iter_rows(values_only=True):
                target_sheet.append(row)
            
# 保存合并后的Excel文件
merged_book.save('merged_file.xlsx')

xlwings

 不废话贴代码

import xlwings as xw

# 打开源Excel文件
source_file = "file1.xlsx"
wb_source = xw.Book(source_file)

# 创建目标Excel文件
target_file = "file2.xlsx"
wb_target = xw.Book(target_file)

# 获取源和目标的工作表
source_sheet = wb_source.sheets[0]
target_sheet = wb_target.sheets[0]

# 复制源Excel文件中的数据和图片到目标Excel文件
source_sheet.api.Copy(Before=target_sheet.api)

# 保存目标Excel文件
wb_target.save()
#wb_target.close()

# 关闭源Excel文件
#wb_source.close()
#杀死execl进程,否则execl一直打开
wb_source.app.kill() 

python自动化第一篇—— 带图文的execl的自动化合并_第1张图片

你可能感兴趣的:(自动化,运维)