Python实现批量Excel拆分功能

 更新时间:2025年02月27日 09:44:44   作者:fufufunny  
在日常办公中,我们经常需要将包含多个Sheet页的Excel文件拆分成多个独立的Excel文件,下面我们就来看看如何使用Python实现批量Excel拆分的功能吧

在日常办公中,我们经常需要将包含多个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拆分内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现线程状态监测简单示例

    Python实现线程状态监测简单示例

    这篇文章主要介绍了Python实现线程状态监测,结合简单实例形式分析了Python线程start启动、sleep推迟运行、isAlive判断等方法使用技巧,需要的朋友可以参考下
    2018-03-03
  • Python 函数装饰器应用教程

    Python 函数装饰器应用教程

    函数装饰器是Python提供的一种增强函数功能的标记函数,本文将带大家深入学习一下Python 函数装饰器,感兴趣的同学跟随小编一起学习吧
    2021-12-12
  • python操作摄像头截图实现远程监控的例子

    python操作摄像头截图实现远程监控的例子

    这篇文章主要介绍了python操作摄像头截图实现远程监控的例子,例子中包含了控制摄像头、写入Windows注册表方法等,需要的朋友可以参考下
    2014-03-03
  • python global和nonlocal用法解析

    python global和nonlocal用法解析

    这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 使用Pytest.main()运行时参数不生效问题解决

    使用Pytest.main()运行时参数不生效问题解决

    本文主要介绍了使用Pytest.main()运行时参数不生效问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python字符串切割:str.split()与re.split()的对比分析

    python字符串切割:str.split()与re.split()的对比分析

    今天小编就为大家分享一篇python字符串切割:str.split()与re.split()的对比分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python获取当前函数名称方法实例分享

    Python获取当前函数名称方法实例分享

    这篇文章主要介绍了Python获取当前函数名称方法实例分享,具有一定借鉴价值
    2018-01-01
  • python字典中get()函数的基本用法实例

    python字典中get()函数的基本用法实例

    在字典内置的方法中,想说的方法为get,这个方法是通过键来获取相应的值,但是如果相应的键不存在则返回None,这篇文章主要给大家介绍了关于python字典中get()函数的基本用法,需要的朋友可以参考下
    2022-03-03
  • python实现定时同步本机与北京时间的方法

    python实现定时同步本机与北京时间的方法

    这篇文章主要介绍了python实现定时同步本机与北京时间的方法,涉及Python针对时间的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 使用python来调用CAN通讯的DLL实现方法

    使用python来调用CAN通讯的DLL实现方法

    今天小编就为大家分享一篇使用python来调用CAN通讯的DLL实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论