Python合并多個(gè)Excel文件的方法實(shí)現(xiàn)與對(duì)比
在日常工作中,處理多個(gè) Excel 文件并將它們合并為一個(gè)文件,常常是數(shù)據(jù)分析、報(bào)告生成等工作的必要步驟。對(duì)于數(shù)據(jù)分析師、業(yè)務(wù)人員以及任何需要處理大量 Excel 數(shù)據(jù)的人來(lái)說(shuō),這是一項(xiàng)常見(jiàn)且繁瑣的任務(wù)。與其手動(dòng)復(fù)制粘貼不同工作表中的數(shù)據(jù),不如使用 Python 自動(dòng)化這一過(guò)程,既省時(shí)又高效。
本文將介紹兩種使用 Python 合并 Excel 文件的方法。這些方法可以幫助您簡(jiǎn)化合并過(guò)程,尤其是在處理大數(shù)據(jù)集時(shí),節(jié)省大量的時(shí)間和精力。
前提條件
要通過(guò)編程方式操作 Excel 文件,您需要一個(gè)支持 Excel 文件處理的庫(kù)。在本篇文章中,我們使用 Spire.XLS for Python,這是一個(gè)可以讀取、修改和保存 Excel 文件的 Python 庫(kù),且不依賴于 Microsoft Excel。
您可以使用以下命令通過(guò) pip 安裝該庫(kù):
pip install spire.xls
安裝完成后,您就可以在 Python 中操作 Excel 文件,通過(guò) API 提供的樣式相關(guān)屬性,控制單元格對(duì)齊、文本旋轉(zhuǎn)等功能。
方法一:將多個(gè) Excel 文件合并成一個(gè)工作簿(多個(gè)工作表)
這種方法將多個(gè) Excel 文件合并為一個(gè)工作簿,并保留每個(gè)文件中的原始工作表。適用于您希望保留文件原有結(jié)構(gòu),同時(shí)又需要將多個(gè)文件合并到一個(gè)工作簿中的情況。
代碼示例
import os
from spire.xls import *
# 存放要合并的 Excel 文件的文件夾
input_folder = './sample_files'
# 合并后的工作簿文件名
output_file = 'merged_workbook.xlsx'
# 初始化合并的工作簿
merged_workbook = None
# 遍歷輸入文件夾中的所有文件
for filename in os.listdir(input_folder):
# 只處理 .xls 或 .xlsx 格式的 Excel 文件
if filename.endswith('.xlsx') or filename.endswith('.xls'):
file_path = os.path.join(input_folder, filename)
# 加載當(dāng)前的 Excel 文件
source_workbook = Workbook()
source_workbook.LoadFromFile(file_path)
if merged_workbook is None:
# 第一個(gè)文件作為基礎(chǔ)合并工作簿
merged_workbook = source_workbook
else:
# 后續(xù)文件將其工作表復(fù)制到合并工作簿中
for i in range(source_workbook.Worksheets.Count):
sheet = source_workbook.Worksheets.get_Item(i)
merged_workbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll)
# 將合并后的工作簿保存到指定的文件
merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)
工作原理
- 設(shè)置文件夾路徑:指定存放 Excel 文件的文件夾(
input_folder)。 - 遍歷文件:腳本會(huì)檢查文件夾中的每個(gè)文件,確保它們是
.xls或.xlsx格式的文件。 - 加載工作簿:對(duì)于每個(gè)文件,腳本將其加載到
Workbook對(duì)象中。 - 合并工作表:第一個(gè)文件初始化了
merged_workbook,后續(xù)文件的工作表會(huì)被復(fù)制到這個(gè)工作簿中。 - 保存輸出:最后,合并后的工作簿會(huì)保存到指定的文件。
輸出:
最終輸出將是一個(gè)名為 ??merged_workbook.xlsx?? 的 Excel 文件,包含了所有 Excel 文件的工作表。
方法二:將多個(gè) Excel 文件合并到一個(gè)工作表中
在這種方法中,我們將多個(gè) Excel 文件的數(shù)據(jù)合并到一個(gè)工作表中。這種方法非常適合將不同工作表中的數(shù)據(jù)合并為一個(gè)工作表,數(shù)據(jù)按文件順序依次排列。
代碼示例
import os
from spire.xls import *
# 存放要合并的 Excel 文件的文件夾
input_folder = './excel_worksheets'
# 合并后的工作簿文件名
output_file = 'merged_into_one_sheet.xlsx'
# 創(chuàng)建一個(gè)新的工作簿來(lái)存放合并的數(shù)據(jù)
merged_workbook = Workbook()
# 使用新工作簿中的第一個(gè)工作表作為目標(biāo)工作表
merged_sheet = merged_workbook.Worksheets[0]
# 初始化開(kāi)始復(fù)制數(shù)據(jù)的行
current_row = 1
# 遍歷輸入文件夾中的所有文件
for filename in os.listdir(input_folder):
# 只處理 .xls 或 .xlsx 格式的 Excel 文件
if filename.endswith('.xlsx') or filename.endswith('.xls'):
file_path = os.path.join(input_folder, filename)
# 加載當(dāng)前的 Excel 文件
workbook = Workbook()
workbook.LoadFromFile(file_path)
# 獲取當(dāng)前工作簿的第一個(gè)工作表
sheet = workbook.Worksheets[0]
# 獲取工作表中已使用的范圍
source_range = sheet.Range
# 設(shè)置目標(biāo)工作表中的復(fù)制范圍,從當(dāng)前行開(kāi)始
dest_range = merged_sheet.Range[current_row, 1]
# 將數(shù)據(jù)從源范圍復(fù)制到目標(biāo)范圍
source_range.Copy(dest_range)
# 更新 current_row,確保不會(huì)覆蓋已復(fù)制的數(shù)據(jù)
current_row += sheet.LastRow
# 將合并后的工作簿保存到指定的輸出文件
merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)
工作原理
- 初始化工作簿:創(chuàng)建一個(gè)新的工作簿來(lái)存放所有合并的數(shù)據(jù)。
- 遍歷文件:像方法一一樣,腳本會(huì)遍歷文件夾中的所有 Excel 文件。
- 復(fù)制數(shù)據(jù):對(duì)于每個(gè)文件,腳本將其第一個(gè)工作表的數(shù)據(jù)復(fù)制到目標(biāo)工作表中。
- 更新行索引:
current_row用來(lái)確保每個(gè)文件的數(shù)據(jù)不會(huì)覆蓋,自動(dòng)跳到下一個(gè)可用的行。 - 保存輸出:將合并后的數(shù)據(jù)保存到
merged_into_one_sheet.xlsx文件中。
輸出:
結(jié)果將是一個(gè)工作表,包含了來(lái)自所有 Excel 文件的數(shù)據(jù),數(shù)據(jù)按文件順序排列。
總結(jié)
將多個(gè) Excel 文件合并為一個(gè)文件是一個(gè)常見(jiàn)的任務(wù),尤其是當(dāng)您需要處理大量文件時(shí),手動(dòng)操作非常繁瑣。使用 Python 和 Spire.XLS 庫(kù),您可以輕松地自動(dòng)化這一過(guò)程,從而節(jié)省大量時(shí)間和精力。
- 方法一 適合當(dāng)您希望保留每個(gè)文件的結(jié)構(gòu),并將其工作表保留在獨(dú)立標(biāo)簽中的場(chǎng)景。
- 方法二 更適合將多個(gè)工作表的數(shù)據(jù)合并到一個(gè)工作表中,便于匯總或分析信息。
這兩種方法都可以根據(jù)您的需求進(jìn)行自定義,設(shè)置好之后,它們將極大地提升您的工作效率,尤其是在處理多個(gè) Excel 文件時(shí)。
到此這篇關(guān)于Python合并多個(gè)Excel文件的方法實(shí)現(xiàn)與對(duì)比的文章就介紹到這了,更多相關(guān)Python合并多個(gè)Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)PDF到Word文檔的高效轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了如何使用Python編程語(yǔ)言,結(jié)合庫(kù)和工具,將PDF文件轉(zhuǎn)換為可編輯的Word文檔,使文檔的編輯變得方便高效,需要的可以參考下2024-01-01
Python中多線程的創(chuàng)建及基本調(diào)用方法
由于注明的GIL的存在,Python盡管能創(chuàng)建多個(gè)線程,但是多線程卻不能同時(shí)工作...well,這里我們來(lái)看一下Python中多線程的創(chuàng)建及基本調(diào)用方法2016-07-07
Python?Tkinter庫(kù)從入門到進(jìn)階使用教程
Tkinter是Python標(biāo)準(zhǔn)庫(kù)中內(nèi)置的圖形用戶界面(GUI)工具包,提供了創(chuàng)建窗口、按鈕、文本框等GUI元素的功能,本文將介紹Tkinter的基礎(chǔ)知識(shí),幫助大家快速入門2023-12-12
Django框架獲取form表單數(shù)據(jù)方式總結(jié)
這篇文章主要介紹了Django框架獲取form表單數(shù)據(jù)方式總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Python學(xué)習(xí)筆記之getattr和hasattr用法示例詳解
在Python中,hasattr()、getattr()和setattr()是一組內(nèi)置函數(shù),用于對(duì)對(duì)象的屬性進(jìn)行操作和查詢,這篇文章主要介紹了Python學(xué)習(xí)筆記之getattr和hasattr用法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-08-08
ubuntu在線服務(wù)器python?Package安裝到離線服務(wù)器的過(guò)程
這篇文章主要介紹了ubuntu在線服務(wù)器python?Package安裝到離線服務(wù)器,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04

