使用Python合并Excel文件中的多個Sheet的實現過程
在日常工作中,我們經常會遇到需要處理多個Excel工作表(Sheet)的情況。比如,一個Excel文件中包含了一個月內每天的數據,每個工作表代表一天。有時候,為了方便分析,我們需要將這些分散的數據合并到一個工作表中。手動復制粘貼不僅效率低下,而且容易出錯。這時,我們可以使用Python的pandas庫和openpyxl庫來自動化這個過程。
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)境準備
首先,確保你的環(huán)境中安裝了pandas和openpyxl庫。如果沒有安裝,可以通過以下命令安裝:
pip install pandas openpyxl
代碼分析
下面是一個簡單的Python腳本,用于合并一個Excel文件中的前5個工作表:
import pandas as pd
def merge_sheets(file_path, output_file, num_sheets=5):
# 加載Excel文件
xls = pd.ExcelFile(file_path)
# 創(chuàng)建一個空的DataFrame用于存儲合并后的數據
merged_df = pd.DataFrame()
# 循環(huán)讀取前num_sheets個工作表
for sheet_name in xls.sheet_names[:num_sheets]:
# 讀取每個工作表的數據
df = pd.read_excel(xls, sheet_name=sheet_name)
# 將讀取的數據追加到merged_df中
merged_df = pd.concat([merged_df, df], ignore_index=True)
# 將合并后的數據保存到新的Excel文件
merged_df.to_excel(output_file, index=False)
# 調用函數
file_path = 'path_to_your_excel_file.xlsx'
output_file = 'merged_excel_file.xlsx'
merge_sheets(file_path, output_file)
代碼解釋
導入庫:首先,我們導入了
pandas庫,它是Python中用于數據處理和分析的強大工具。定義函數:我們定義了一個名為
merge_sheets的函數,它接受三個參數:file_path(Excel文件的路徑)、output_file(輸出文件的名稱)、num_sheets(需要合并的工作表數量,默認為5)。加載Excel文件:使用
pd.ExcelFile函數加載Excel文件,這樣我們可以訪問文件中的所有工作表。初始化DataFrame:創(chuàng)建一個空的
DataFrame,merged_df,用于存儲合并后的數據。循環(huán)讀取工作表:通過
xls.sheet_names獲取所有工作表的名稱,并循環(huán)讀取前num_sheets個工作表。對于每個工作表,使用pd.read_excel函數讀取數據,并使用pd.concat函數將其追加到merged_df中。保存合并后的數據:最后,使用
to_excel函數將合并后的數據保存到新的Excel文件中。
運行結果


注意事項
- 確保
file_path和output_file正確指向了你的文件路徑和期望的輸出文件。 - 如果你的Excel文件中的工作表數量超過了5個,你可以通過修改
num_sheets參數來調整需要合并的工作表數量。 - 合并的數據將按照它們在原始文件中的順序排列。
通過使用Python腳本自動化合并Excel工作表的過程,我們可以節(jié)省大量的時間和精力,特別是在處理大型數據集時。這種方法不僅提高了效率,而且減少了人為錯誤的可能性。
以上就是使用Python合并Excel文件中的多個Sheet的實現過程的詳細內容,更多關于Python合并多個Sheet的資料請關注腳本之家其它相關文章!
相關文章
Django2.1集成xadmin管理后臺所遇到的錯誤集錦(填坑)
這篇文章主要介紹了Django2.1集成xadmin管理后臺所遇到的錯誤集錦(填坑),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
Anaconda安裝之后Spyder打不開解決辦法(親測有效!)
這篇文章主要給大家介紹了關于Anaconda安裝之后Spyder打不開解決辦法,文中將解決的過程介紹的非常詳細,親測有效,對同樣遇到這個問題的朋友具有一定的參考學習價值,需要的朋友可以參考下2023-04-04

