当前位置: 首页 > article >正文

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() 


http://www.kler.cn/a/133520.html

相关文章:

  • Python的Matplotlib
  • catchadmin-webman 宝塔 部署
  • C#发票识别、发票查验接口集成、电子发票(航空运输电子行程单)
  • Node.js笔记
  • 使用kalibr_calibration标定相机(realsense)和imu(h7min)
  • 拦截器实现http请求访问本地图片
  • flink中配置Rockdb的重要配置项
  • 跟李沐学AI-深度学习课程05线性代数
  • react中设置activeClassName的笔记
  • 4.6每日一题(多元函数的隐函数求导)
  • 简单的用Python实现一下,采集某牙视频,多个视频翻页下载
  • 图像分类(五) 全面解读复现ResNet
  • idea启动tomcat报错404
  • 基于未来搜索算法优化概率神经网络PNN的分类预测 - 附代码
  • 2311rust,到60版本更新
  • 资深测试总结,现在软件测试有未来吗?“你“的底气在哪里?
  • mysql表字段数据类型对应java类型
  • 矩阵的QR分解
  • 向pycdc项目提的一个pr
  • 使用Qt实现多人聊天工作室
  • 聚观早报 |联想集团Q2财季业绩;小鹏汽车Q3营收
  • uniapp自定义组件
  • 线性方程组
  • Django部署时静态文件配置的坑
  • 2023最新最全【Nacos】零基础安装教程
  • 2023年首届天府杯数学建模国际大赛问题A思路详解与参考代码:大地测量数据中异常现象的特征和识别