合并多个Excel文件到一个文件,并保留格式

合并多个Excel文件到一个文件,并保留格式

  • 需求介绍
  • 第一步:创建目标文件
  • 第二步:创建任务列表
  • 第三步:合并文件
  • 第四步:处理合并后的文件之调用程序打开并保存一次之前生成的Excel文件
  • 第五步:处理合并后的文件之删除合并后文件的无用表单
  • 完整代码

需求介绍

假设目前存在多个Excel文件,文件名如:A01.xlsx,A02.xlsx,A03.xlsx,A04.xlsx,

现在需要将A01.xlsx中的表单Sheet1,合并到合并后文件.xlsx中的A1表单中,
A02.xlsx中的表单Sheet1,合并到合并后文件.xlsx中的A2表单中,以此类推。

第一步:创建目标文件

def creat_new_excel(file_path):# 创建一个新的Excel文件content_list = []df = pd.DataFrame(content_list)df.to_excel(file_path, sheet_name="测试")  # 设置统一的表单名称,便于后期统一删除returntarget_file = r"D:\任务\pythonProject\汇总后文件.xlsx"  creat_new_excel(target_file) # 创建目标文件

第二步:创建任务列表

def source_file():# 文件路径,文件名称及后缀source_file_list = [[r"D:\任务\pythonProject\A\A01.xlsx", "A01.xlsx"],   [r"D:\任务\pythonProject\A\A02.xlsx", "A02.xlsx"],[r"D:\任务\pythonProject\A\A03.xlsx", "A03.xlsx"],]return source_file_list

第三步:合并文件

def target(target_file):destWorkbook = Workbook()destWorkbook.LoadFromFile(target_file)return destWorkbookdef get_source_sheet(destWorkbook,source_file_path,source_file_name):sourceWorkbook = Workbook()sourceWorkbook.LoadFromFile(source_file_path)# 复制之后的sheet名sourceSheet = sourceWorkbook.Worksheets[0]  # 子文件中的第一个Sheet,可以根据需求进行调整sheetName = source_file_name[:-5]destSheet = destWorkbook.Worksheets.Add(sheetName)# 复制destSheet.CopyFrom(sourceSheet)destWorkbook.CopyTheme(sourceWorkbook)sourceWorkbook.Dispose()return destWorkbookfor source in source_file():destWorkbook = get_source_sheet(target(target_file),source[0],source[1])# 保存,根据Excel版本不同destWorkbook.SaveToFile(target_file, ExcelVersion.Version2016)# 释放destWorkbook.Dispose()

第四步:处理合并后的文件之调用程序打开并保存一次之前生成的Excel文件

这一步的原因是,openpyxl不能直接读取通过Python生成的xlsx文件
解决方式有两种:

  • 一是手动打开文件并保存
  • 二是通过程序进行打开并保存
def just_open(filename):xlApp = Dispatch("Excel.Application")xlApp.Visible = FalsexlBook = xlApp.Workbooks.Open(filename)xlBook.Save()xlBook.Close()xlApp.Quit()del xlApp

第五步:处理合并后的文件之删除合并后文件的无用表单

def deal_file(filename):# import openpyxl# 加载Excel文件wb = load_workbook(filename=filename, read_only=False)# print(wb.sheetnames)wb.remove(wb["测试"])  # 移除,新建Excel文件的时候,生成的表单wb.remove(wb["Evaluation Warning"])  # 移除,使用spire.xls模块生成的表单wb.save(filename)

完整代码

from spire.xls import Workbook, ExcelVersion  # pip install spire.xls
from win32com.client import Dispatch
from openpyxl import load_workbook  # pip install openpyxl
import pandas as pd
import osdef creat_new_excel(file_path):# 创建一个新的Excel文件content_list = []df = pd.DataFrame(content_list)df.to_excel(file_path, sheet_name="测试")  # 设置统一的表单名称,便于后期统一删除returndef source_file():source_file_list = [[r"D:\任务\pythonProject\A\A01.xlsx", "A01.xlsx"],   # 文件路径,文件名称及后缀[r"D:\任务\pythonProject\A\A02.xlsx", "A02.xlsx"],[r"D:\任务\pythonProject\A\A03.xlsx", "A03.xlsx"],]return source_file_listdef deal_file(filename):# import openpyxl# 加载Excel文件wb = load_workbook(filename=filename, read_only=False)# print(wb.sheetnames)wb.remove(wb["测试"])  # 移除,新建Excel文件的时候,生成的表单wb.remove(wb["Evaluation Warning"])  # 移除,使用spire.xls模块生成的表单wb.save(filename)def target(target_file):destWorkbook = Workbook()destWorkbook.LoadFromFile(target_file)return destWorkbookdef get_source_sheet(destWorkbook,source_file_path,source_file_name):sourceWorkbook = Workbook()sourceWorkbook.LoadFromFile(source_file_path)# 复制之后的sheet名sourceSheet = sourceWorkbook.Worksheets[0]  # 子文件中的第一个Sheet,可以根据需求进行调整sheetName = source_file_name[:-5]destSheet = destWorkbook.Worksheets.Add(sheetName)# 复制destSheet.CopyFrom(sourceSheet)destWorkbook.CopyTheme(sourceWorkbook)sourceWorkbook.Dispose()return destWorkbookdef just_open(filename):xlApp = Dispatch("Excel.Application")xlApp.Visible = FalsexlBook = xlApp.Workbooks.Open(filename)xlBook.Save()xlBook.Close()xlApp.Quit()del xlAppdef run():target_file = r"D:\任务\pythonProject\汇总后文件.xlsx"  creat_new_excel(target_file) # 创建目标文件for source in source_file():destWorkbook = get_source_sheet(target(target_file),source[0],source[1])# 保存,根据Excel版本不同destWorkbook.SaveToFile(target_file, ExcelVersion.Version2016)# 释放# sourceWorkbook.Dispose()destWorkbook.Dispose()# 删除表just_open(target_file)  deal_file(target_file)print(target_file)if __name__ == '__main__':run()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TDengine 中的压缩设计

简介 机器设备产生的时序数据量大,直接存储成本非常高,所以需要使用压缩技术,尽可能减小体积。 TDengine 使用了列式存储,结合二级压缩技术,压缩率通常可以达到 20%,特殊情况下更能达到 5 % 以内&#xff…

深度学习涉及的数学与计算机知识总结

深度学习涉及的数学与计算机知识可总结为以下核心模块,结合理论与实践需求分为数学基础和计算机技能两大方向: 一、数学知识 线性代数 核心:矩阵运算(乘法、转置、逆矩阵)、向量空间、特征值与特征向量、奇异值分解&am…

javascript<——>进阶

一、作用域:变量可以被访问的范围 1.局部作用域 1.1函数作用域 在函数内部声明的变量,在函数内部被访问的,外部无法直接访问。 总结:1、函数内部声明的变量,在函数外部无法直接访问 2、函数的参数也是函数内部的局…

驱动开发硬核特训 · Day 25 (附加篇):从设备树到驱动——深入理解Linux时钟子系统的实战链路

一、前言 在嵌入式Linux开发中,无论是CPU、外设控制器,还是简单的GPIO扩展器,大多数硬件模块都离不开时钟信号的支撑。 时钟子系统(Clock Subsystem),作为Linux内核中基础设施的一部分,为设备…

并发设计模式实战系列(7):Thread Local Storage (TLS)

🌟 大家好,我是摘星! 🌟 今天为大家带来的是并发设计模式实战系列,第七章Thread Local Storage (TLS),废话不多说直接开始~ 目录 一、核心原理深度拆解 1. TLS内存模型 2. 关键特性 二、生活化类比&a…

时序数据库 TDengine × Perspective:你需要的可视化“加速器”

你有没有遇到这样的场景:数据已经写进数据库,图表却总是“慢半拍”?或是操作界面太卡,光是一个排序就能让你等到喝完一杯咖啡?当数据量越来越大、响应时间却越来越长,开发者和用户都不禁要问一句——就没有…

前端面试每日三题 - Day 19

这是我为准备前端/全栈开发工程师面试整理的第十一天每日三题练习,涵盖 JavaScript中WeakMap与内存管理的底层机制、Redux Toolkit的事件以及系统设计中的企业级表单引擎构建。通过这三道题,你将对现代前端开发中的关键概念有更深入的理解,并…

Antd Modal Drawer 更改默认项

当项目比较大使用了非常多的 Modal 和 Drawer 要是有需求一次性全部调整就会比较麻烦,目前 Antd 的 ConfigProvider 暂不支持(也有可能我没找到,待大佬指证)就比如由于默认 Modal Drawer 的遮罩层是可以点击关闭的,但是…

硬件工程师面试常见问题(8)

第三十六问:基尔霍夫定理的内容是什么? 基尔霍夫电流定理: 1. 内容:电路中任意一个节点上,在任意时刻,流入节电的电流之和等于流出节点的电流之和。 2. 表达式:根据上图写出节点电流定律的数学…

Elasticsearch 内存使用指南

作者:来自 Elastic Valentin Crettaz 探索 Elasticsearch 的内存需求以及不同类型的内存统计信息。 Elasticsearch 拥有丰富的新功能,帮助你为你的使用场景构建最佳搜索解决方案。浏览我们的示例笔记本了解更多信息,开始免费云试用&#xff0…

硬件工程师面试常见问题(9)

第四十一问:色环电阻的颜色表示什么? 各环表示的意思: 4色环的:前两位表示有效位;第三环表示倍乘;最后一环表示误差; 5色环的:前三位表示有效位;第四环表示倍乘&#…

PyTorch 深度学习实战(23):多任务强化学习(Multi-Task RL)之扩展

之前的PyTorch 深度学习实战(23):多任务强化学习(Multi-Task RL)总结扩展运用代码如下: import torch import torch.nn as nn import torch.optim as optim import numpy as np from torch.distributions import Norm…

前端——CSS1

一,概述 CSS(Cascading Style Sheets)(级联样式表) css是一种样式表语言,为html标签修饰定义外观,分工不同 涉及:对网页的文字、背景、宽、高、布局进行修饰 分为内嵌样式表&…

赋能航天教育:高校卫星仿真教学实验平台解决方案

​​​​​​ 随着全球航天事业的飞速发展,对高素质航天人才的需求日益增长。如何在高校阶段提前锻炼学生的航天工程实践能力,成为教育界的重要命题。作为领先的通信与网络技术供应商,IPLOOK基于自身在5G核心网、卫星通信及仿真平台领域的深…

Python爬虫(10)Python数据存储实战:基于pymongo的MongoDB开发深度指南

目录 一、为什么需要文档型数据库?1.1 数据存储的范式变革1.2 pymongo的核心优势 二、pymongo核心操作全解析2.1 环境准备2.2 数据库连接与CRUD操作2.3 聚合管道实战2.4 分批次插入百万级数据(进阶)2.5 分批次插入百万级数据(进阶…

Springboot 手搓 后端 滑块验证码生成

目录 一、效果演示 二、后端滑块验证码生成思路 三、原理解析 四、核心代码拿走 滑块验证码react前端实现,见我的这篇博客:前端 React 弹窗式 滑动验证码实现_react中使用阿里云滑块验证码2.0前端接入及相关视觉-CSDN博客 一、效果演示 生成的案例…

关于flink两阶段提交高并发下程序卡住问题

先抛出代码 package com.dpf.flink;import com.dpf.flink.sink.MysqlSink; import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.…

html css js网页制作成品——HTML+CSS+js美甲店网页设计(5页)附源码

美甲店 目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&a…

LeetCode[347]前K个高频元素

思路: 使用小顶堆,最小的元素都出去了,省的就是大,高频的元素了,所以要维护一个小顶堆,使用map存元素高频变化,map存堆里,然后输出堆的东西就行了 代码: class Solution…

2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?

2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型? 一、8大主流Web开发语言技术对比 1. PHP开发:中小型网站的首选方案 最新版本:PHP 8.3(2023年11月发布)核心优势: 全球78%的网站…