使用Python合并Excel文件中的多個(gè)Sheet的實(shí)現(xiàn)過(guò)程
在日常工作中,我們經(jīng)常會(huì)遇到需要處理多個(gè)Excel工作表(Sheet)的情況。比如,一個(gè)Excel文件中包含了一個(gè)月內(nèi)每天的數(shù)據(jù),每個(gè)工作表代表一天。有時(shí)候,為了方便分析,我們需要將這些分散的數(shù)據(jù)合并到一個(gè)工作表中。手動(dòng)復(fù)制粘貼不僅效率低下,而且容易出錯(cuò)。這時(shí),我們可以使用Python的pandas庫(kù)和openpyxl庫(kù)來(lái)自動(dòng)化這個(gè)過(guò)程。
D:\spiderdocs\mergesheet.py
全部代碼
import wx
from openpyxl import load_workbook, Workbook
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, title="Excel Sheet Merger")
frame.Show()
return True
class MyFrame(wx.Frame):
def __init__(self, parent, title):
super(MyFrame, self).__init__(parent, title=title, size=(300, 200))
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
self.button = wx.Button(panel, label="Select Excel File")
self.button.Bind(wx.EVT_BUTTON, self.on_open_file)
vbox.Add(self.button, 0, wx.ALL | wx.CENTER, 5)
panel.SetSizer(vbox)
def on_open_file(self, event):
with wx.FileDialog(self, "Open Excel file", wildcard="Excel files (*.xlsx)|*.xlsx",
style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
if fileDialog.ShowModal() == wx.ID_CANCEL:
return
path = fileDialog.GetPath()
self.merge_sheets(path)
def merge_sheets(self, filepath):
wb = load_workbook(filepath)
new_wb = Workbook()
new_ws = new_wb.active
new_ws.title = "Merged Sheet"
for i, sheet_name in enumerate(wb.sheetnames[:5]):
ws = wb[sheet_name]
for row in ws.iter_rows(values_only=True):
new_ws.append(row)
save_path = filepath.replace('.xlsx', '_merged.xlsx')
new_wb.save(save_path)
wx.MessageBox(f"Merged file saved as: {save_path}", "Info", wx.OK | wx.ICON_INFORMATION)
if __name__ == '__main__':
app = MyApp()
app.MainLoop()
環(huán)境準(zhǔn)備
首先,確保你的環(huán)境中安裝了pandas和openpyxl庫(kù)。如果沒(méi)有安裝,可以通過(guò)以下命令安裝:
pip install pandas openpyxl
代碼分析
下面是一個(gè)簡(jiǎn)單的Python腳本,用于合并一個(gè)Excel文件中的前5個(gè)工作表:
import pandas as pd
def merge_sheets(file_path, output_file, num_sheets=5):
# 加載Excel文件
xls = pd.ExcelFile(file_path)
# 創(chuàng)建一個(gè)空的DataFrame用于存儲(chǔ)合并后的數(shù)據(jù)
merged_df = pd.DataFrame()
# 循環(huán)讀取前num_sheets個(gè)工作表
for sheet_name in xls.sheet_names[:num_sheets]:
# 讀取每個(gè)工作表的數(shù)據(jù)
df = pd.read_excel(xls, sheet_name=sheet_name)
# 將讀取的數(shù)據(jù)追加到merged_df中
merged_df = pd.concat([merged_df, df], ignore_index=True)
# 將合并后的數(shù)據(jù)保存到新的Excel文件
merged_df.to_excel(output_file, index=False)
# 調(diào)用函數(shù)
file_path = 'path_to_your_excel_file.xlsx'
output_file = 'merged_excel_file.xlsx'
merge_sheets(file_path, output_file)
代碼解釋
導(dǎo)入庫(kù):首先,我們導(dǎo)入了
pandas庫(kù),它是Python中用于數(shù)據(jù)處理和分析的強(qiáng)大工具。定義函數(shù):我們定義了一個(gè)名為
merge_sheets的函數(shù),它接受三個(gè)參數(shù):file_path(Excel文件的路徑)、output_file(輸出文件的名稱)、num_sheets(需要合并的工作表數(shù)量,默認(rèn)為5)。加載Excel文件:使用
pd.ExcelFile函數(shù)加載Excel文件,這樣我們可以訪問(wèn)文件中的所有工作表。初始化DataFrame:創(chuàng)建一個(gè)空的
DataFrame,merged_df,用于存儲(chǔ)合并后的數(shù)據(jù)。循環(huán)讀取工作表:通過(guò)
xls.sheet_names獲取所有工作表的名稱,并循環(huán)讀取前num_sheets個(gè)工作表。對(duì)于每個(gè)工作表,使用pd.read_excel函數(shù)讀取數(shù)據(jù),并使用pd.concat函數(shù)將其追加到merged_df中。保存合并后的數(shù)據(jù):最后,使用
to_excel函數(shù)將合并后的數(shù)據(jù)保存到新的Excel文件中。
運(yùn)行結(jié)果


注意事項(xiàng)
- 確保
file_path和output_file正確指向了你的文件路徑和期望的輸出文件。 - 如果你的Excel文件中的工作表數(shù)量超過(guò)了5個(gè),你可以通過(guò)修改
num_sheets參數(shù)來(lái)調(diào)整需要合并的工作表數(shù)量。 - 合并的數(shù)據(jù)將按照它們?cè)谠嘉募械捻樞蚺帕小?/li>
通過(guò)使用Python腳本自動(dòng)化合并Excel工作表的過(guò)程,我們可以節(jié)省大量的時(shí)間和精力,特別是在處理大型數(shù)據(jù)集時(shí)。這種方法不僅提高了效率,而且減少了人為錯(cuò)誤的可能性。
以上就是使用Python合并Excel文件中的多個(gè)Sheet的實(shí)現(xiàn)過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于Python合并多個(gè)Sheet的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python如何實(shí)現(xiàn)遠(yuǎn)程控制電腦(結(jié)合微信)
這篇文章主要介紹了python如何實(shí)現(xiàn)遠(yuǎn)程控制電腦,利用python設(shè)計(jì)了一個(gè)程序來(lái)實(shí)現(xiàn)自由管控,感興趣的小伙伴們可以參考一下2015-12-12
Django2.1集成xadmin管理后臺(tái)所遇到的錯(cuò)誤集錦(填坑)
這篇文章主要介紹了Django2.1集成xadmin管理后臺(tái)所遇到的錯(cuò)誤集錦(填坑),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Anaconda安裝之后Spyder打不開解決辦法(親測(cè)有效!)
這篇文章主要給大家介紹了關(guān)于Anaconda安裝之后Spyder打不開解決辦法,文中將解決的過(guò)程介紹的非常詳細(xì),親測(cè)有效,對(duì)同樣遇到這個(gè)問(wèn)題的朋友具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-04-04
Python一行代碼快速實(shí)現(xiàn)程序進(jìn)度條示例
這篇文章主要為大家介紹了Python一行代碼快速實(shí)現(xiàn)程序進(jìn)度條示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
python中re模塊知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于python中re模塊知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-01-01
python使用sklearn實(shí)現(xiàn)決策樹的方法示例
這篇文章主要介紹了python使用sklearn實(shí)現(xiàn)決策樹的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

