Python自动化办公之Excel拆分
在日常办公中,我们经常需要将包含多个Sheet页的Excel文件拆分成多个独立的Excel文件。例如,在发送Excel表给各部门确认时,出于控制知悉范围最小等保密性考虑,每个部门只需要查看和确认自己部门对应的Sheet页。手动拆分Excel文件非常繁琐耗时,为了提高效率,我们可以使用Python编写一个自动化工具,批量拆分Excel文件中的每个Sheet页为独立的Excel文件。
本文将分享如何使用Python实现批量Excel拆分的功能,并提供详细的代码解释。
代码实现
1. 安装依赖库
在开始之前,我们需要安装一些必要的Python库。我们将使用pywin32库来操作Excel文件。你可以通过以下命令安装:
pip install pywin32
2. 编写代码
以下是完整的Python代码,用于批量拆分Excel文件中的每个Sheet页为独立的Excel文件。代码中包含了详细的中文注释,方便理解。
import os
import shutil
import win32com.client
from tqdm import tqdm
def 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办公自动化技巧。