合并多個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.pswp.cn/web/77817.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77817.shtml
英文地址,請注明出處:http://en.pswp.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%的網站…