Python合并多個(gè)Excel文件的方法實(shí)現(xiàn)與對(duì)比
在日常工作中,處理多個(gè) Excel 文件并將它們合并為一個(gè)文件,常常是數(shù)據(jù)分析、報(bào)告生成等工作的必要步驟。對(duì)于數(shù)據(jù)分析師、業(yè)務(wù)人員以及任何需要處理大量 Excel 數(shù)據(jù)的人來說,這是一項(xiàng)常見且繁瑣的任務(wù)。與其手動(dòng)復(fù)制粘貼不同工作表中的數(shù)據(jù),不如使用 Python 自動(dòng)化這一過程,既省時(shí)又高效。
本文將介紹兩種使用 Python 合并 Excel 文件的方法。這些方法可以幫助您簡(jiǎn)化合并過程,尤其是在處理大數(shù)據(jù)集時(shí),節(jié)省大量的時(shí)間和精力。
前提條件
要通過編程方式操作 Excel 文件,您需要一個(gè)支持 Excel 文件處理的庫。在本篇文章中,我們使用 Spire.XLS for Python,這是一個(gè)可以讀取、修改和保存 Excel 文件的 Python 庫,且不依賴于 Microsoft Excel。
您可以使用以下命令通過 pip 安裝該庫:
pip install spire.xls
安裝完成后,您就可以在 Python 中操作 Excel 文件,通過 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è)新的工作簿來存放合并的數(shù)據(jù)
merged_workbook = Workbook()
# 使用新工作簿中的第一個(gè)工作表作為目標(biāo)工作表
merged_sheet = merged_workbook.Worksheets[0]
# 初始化開始復(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)前行開始
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è)新的工作簿來存放所有合并的數(shù)據(jù)。
- 遍歷文件:像方法一一樣,腳本會(huì)遍歷文件夾中的所有 Excel 文件。
- 復(fù)制數(shù)據(jù):對(duì)于每個(gè)文件,腳本將其第一個(gè)工作表的數(shù)據(jù)復(fù)制到目標(biāo)工作表中。
- 更新行索引:
current_row用來確保每個(gè)文件的數(shù)據(jù)不會(huì)覆蓋,自動(dòng)跳到下一個(gè)可用的行。 - 保存輸出:將合并后的數(shù)據(jù)保存到
merged_into_one_sheet.xlsx文件中。
輸出:
結(jié)果將是一個(gè)工作表,包含了來自所有 Excel 文件的數(shù)據(jù),數(shù)據(jù)按文件順序排列。
總結(jié)
將多個(gè) Excel 文件合并為一個(gè)文件是一個(gè)常見的任務(wù),尤其是當(dāng)您需要處理大量文件時(shí),手動(dòng)操作非常繁瑣。使用 Python 和 Spire.XLS 庫,您可以輕松地自動(dòng)化這一過程,從而節(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中filter與lambda的結(jié)合使用詳解
今天小編就為大家分享一篇Python中filter與lambda的結(jié)合使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN
這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
手把手教你使用TensorFlow2實(shí)現(xiàn)RNN
本文主要介紹了TensorFlow2實(shí)現(xiàn)RNN,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
如何使用Tkinter進(jìn)行窗口的管理與設(shè)置
Tkinter是Python的標(biāo)準(zhǔn)GUI庫,它實(shí)際是建立在Tk技術(shù)上的。在大多數(shù)Unix平臺(tái)以及Windows系統(tǒng)上都可用2021-06-06
Django發(fā)送郵件和itsdangerous模塊的配合使用解析
這篇文章主要介紹了Django發(fā)送郵件和itsdangerous模塊的配合使用解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08

