在日常办公中,我们经常需要将包含多个sheet页的excel文件拆分成多个独立的excel文件。例如,当我们要把一份excel表格发给各部门确认时,出于控制信息知悉范围、确保数据保密性等方面的考虑,每个部门仅需查看和确认与自己部门对应的sheet页。手动拆分excel文件非常繁琐耗时,为了提高效率,我们可以使用python编写一个自动化小工具,批量拆分excel文件中的每个sheet页为独立的excel文件。
本文将分享如何使用python实现批量excel拆分的功能,并提供详细的代码解释。
1. 需求分析
保持原始sheet页格式: 在拆分过程中,需要保证每个独立excel文件中的内容格式与原excel文件中对应sheet页的格式完全一致,包括字体样式、单元格格式、颜
色设置、对齐方式等,避免因格式丢失影响数据的查看和分析。
输出文件管理: 将拆分后的独立excel文件统一存放到指定的输出文件夹中,便于管理和查找。
2. 安装依赖库
在开始编写代码之前,我们需要安装一些必要的 python 库。这里我们将使用 pywin32 库来操作excel文件,使用 tqdm 库来显示拆分进度。你可以通过以下命令进行安装:
pip install pywin32 tqdm
3. 代码实现
以下是完整的python代码,用于批量拆分excel文件中的每个sheet页为独立的excel文件。代码中包含了详细的中文注释,方便大家理解。
3.1 sheet2excel.py
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.2 代码说明
1. 函数定义与路径处理:
sheet2excel 函数接收两个参数:input_excel_path(输入的 excel 文件路径)和 output_path(输出的文件夹路径)。
通过 os.path.dirname(os.path.realpath(__file__)) 获取当前脚本所在的目录,再使用 os.path.join 函数将相对路径转换为绝对路径,确保在不同操作系统上都能正确处理文件和文件夹路径。
2. excel 应用程序初始化:
- win32com.client.dispatch("excel.application"):初始化 excel 应用程序对象,用于后续对 excel 文件的操作。
- excel.visible = false:将 excel 应用程序设置为不可见,避免在后台打开 excel 界面,减少对用户操作的干扰。
3. 输出文件夹处理:
- shutil.rmtree(output_dir_path):若输出文件夹已经存在,则删除该文件夹及其包含的所有内容,确保输出文件夹为空,避免文件冲突。
- os.makedirs(output_dir_path):创建新的输出文件夹,用于存放拆分后的独立 excel 文件。
4. 文件拆分操作:
- wb = excel.workbooks.open(...):打开指定的 excel 文件。
- for sheet in tqdm(wb.sheets, desc="excel 拆分"):使用 tqdm 库遍历 excel 文件中的每个 sheet 页,并显示拆分进度。
- sheet.copy():将当前 sheet 页复制到一个新的工作簿中。
- excel.activeworkbook.saveas(...):将新的工作簿保存为独立的 excel 文件,文件名以原 sheet 页的名称命名。
- excel.activeworkbook.close():关闭新的工作簿。
- wb.close():关闭原始的 excel 工作簿。
5. 资源释放:
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。在拆分过程中,你可以在控制台看到拆分进度的显示,方便了解拆分工作的进展情况。
5. 注意事项
excel 版本兼容性:此代码基于 pywin32 库操作excel文件,需要确保你的系统中安装了microsoft excel软件,并且代码在不同版本的 excel上可能存在兼容性问题。建议在运行代码前,先在小范围数据上进行测试。
输出文件夹权限:确保运行代码的用户对输出文件夹具有读写和删除权限,否则可能会导致无法正常创建或删除输出文件夹。
数据备份:在执行拆分操作前,务必对原始excel文件进行备份,以防在拆分过程中出现意外情况导致数据丢失或损坏。
6. 总结
通过本文介绍的python代码,我们可以轻松实现批量拆分excel文件的功能。这种方法不仅提高了工作效率,还减少了手动操作带来的错误风险。
到此这篇关于python实现批量excel拆分功能的文章就介绍到这了,更多相关python excel拆分内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论