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

