在日常辦公中,我們經常需要將包含多個Sheet頁的Excel文件拆分成多個獨立的Excel文件。例如,在發送Excel表給各部門確認時,出于控制知悉范圍最小等保密性考慮,每個部門只需要查看和確認自己部門對應的Sheet頁。手動拆分Excel文件非常繁瑣耗時,為了提高效率,我們可以使用Python編寫一個自動化小工具,批量拆分Excel文件中的每個Sheet頁為獨立的Excel文件。
本文將分享如何使用Python實現批量Excel拆分的功能,并提供詳細的代碼解釋。
1. 需求分析
- 保持原始Sheet頁格式
2. 安裝依賴庫
在開始之前,我們需要安裝一些必要的Python庫。我們將使用pywin32庫來操作Excel文件。你可以通過以下命令安裝:
pip install pywin32
3. 代碼實現
以下是完整的Python代碼,用于批量拆分Excel文件中的每個Sheet頁為獨立的Excel文件。代碼中包含了詳細的中文注釋,方便理解。
import os
import shutil
import win32com.client
from tqdm import tqdmdef sheet2excel(input_excel_path, output_path):"""將Excel文件中的每個Sheet頁拆分為獨立的Excel文件:param input_excel_path: 輸入的Excel文件路徑:param output_path: 輸出的文件夾路徑"""# 獲取當前腳本所在的目錄parent = os.path.dirname(os.path.realpath(__file__))# 初始化Excel應用程序excel = win32com.client.Dispatch("Excel.Application")excel.Visible = False # 不顯示Excel界面# 輸出文件夾存在則刪除重新創建output_dir_path = os.path.join(parent, output_path)if os.path.exists(output_dir_path):shutil.rmtree(output_dir_path)os.makedirs(output_dir_path)try:# 打開Excel文件wb = excel.Workbooks.Open(os.path.join(parent, input_excel_path))# 遍歷每個Sheet頁for sheet in tqdm(wb.Sheets, desc="EXCEL拆分"):# 復制當前Sheet頁到一個新的工作簿sheet.Copy()# 保存新的工作簿為獨立的Excel文件excel.ActiveWorkbook.SaveAs(os.path.join(output_dir_path, f"{sheet.Name}.xlsx"))# 關閉新的工作簿excel.ActiveWorkbook.Close()# 關閉原始工作簿wb.Close()finally:# 退出Excel應用程序excel.Quit()if __name__ == "__main__":# 示例:拆分當前目錄下的example.xlsx文件,輸出到output文件夾sheet2excel("example.xlsx", "output")
3. 代碼解釋
-
win32com.client.Dispatch("Excel.Application")
: 初始化Excel應用程序對象,用于操作Excel文件。 -
excel.Visible = False
: 設置Excel應用程序不可見,避免在后臺打開Excel界面。 -
shutil.rmtree(output_dir_path)
: 如果輸出文件夾已存在,則刪除該文件夾及其內容。 -
os.makedirs(output_dir_path)
: 創建輸出文件夾。 -
wb = excel.Workbooks.Open(...)
: 打開指定的Excel文件。 -
sheet.Copy()
: 復制當前Sheet頁到一個新的工作簿。 -
excel.ActiveWorkbook.SaveAs(...)
: 將新的工作簿保存為獨立的Excel文件。 -
excel.ActiveWorkbook.Close()
: 關閉新的工作簿。 -
wb.Close()
: 關閉原始工作簿。 -
excel.Quit()
: 退出Excel應用程序。
4. 使用示例
假設我們有一個名為example.xlsx
的Excel文件,其中包含三個Sheet頁:Sheet1
、Sheet2
和Sheet3
。我們可以通過以下代碼將每個Sheet頁拆分為獨立的Excel文件,并保存到output
文件夾中:
if __name__ == "__main__":sheet2excel("example.xlsx", "output")
運行后,output
文件夾中將生成三個獨立的Excel文件:Sheet1.xlsx
、Sheet2.xlsx
和Sheet3.xlsx
。
總結
通過本文介紹的Python代碼,我們可以輕松實現批量拆分Excel文件的功能。這種方法不僅提高了工作效率,還減少了手動操作帶來的錯誤風險。希望本文對你有所幫助,歡迎在評論區分享你的使用體驗和改進建議。
如果你對其他自動化辦公場景感興趣,歡迎關注我的專欄,后續將分享更多實用的Python辦公自動化技巧。