展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python使用Spire.XLS自动化拆分Excel文件的四大场景实现详解

Python使用Spire.XLS自动化拆分Excel文件的四大场景实现详解

借助Spire.XLSforPython,可自动化拆分Excel文件,实现按工作表、行、列及指定条件四种场景。通过遍历工作表、复制行或列数据,将重复劳动交由代码完成,大幅提升数据处理效率,节省时间与人力。

本文目录
    在日常办公和数据处理中,Excel 凭借直观的表格结构和丰富的数据处理功能,一直是报表统计、数据管理、信息整理的主力工具。但随着数据量越来越大,一个 Excel 文件里可能装着多个工作表、成千上万条记录,或者不同类型的数据内容。这时候,如果想进一步整理这些数据,直接在 Excel 里手动操作往往让人头疼——把不同工作表单独保存、按固定行数拆分大文件、根据某个字段生成多个独立文件……如果全靠复制粘贴,效率低不说,还容易漏数据。而**通过 Python 自动化拆分 Excel 文件**,就能把重复劳动交给代码,大幅提升效率。 今天这篇教程,我们就借助 Spire.XLS for Python,聊聊在 Python 环境中实现 Excel 拆分的几种常见场景。文章会分别展示按工作表、行、列以及指定条件拆分的方法,你可以根据实际需求挑合适的来用。

    环境准备

    在开始拆分之前,先得把依赖装好。Spire.XLS for Python 是一个功能丰富的 Excel 文档处理组件,支持创建、读取、修改、格式转换等操作,而且不需要安装 Microsoft Office。用 pip 安装即可:
    pip install spire.xls
    此外,该组件还有免费版,适合小项目或测试场景。安装完成后,导入模块就能开始:
    from spire.xls import *
    from spire.xls.common import *
    本文会用到以下几个核心对象,先列个表方便理解:
    对象作用
    Workbook表示整个 Excel 工作簿
    Worksheet表示工作簿中的工作表
    Range表示单元格区域

    通过 Python 按工作表拆分 Excel 文件

    一个 Excel 工作簿往往包含多个工作表,比如不同月份的数据、不同地区的报表。如果想把每个工作表单独存成一个 Excel 文件,只需遍历 Workbook 中的 Worksheet,然后逐个复制到新工作簿即可。 用 Spire.XLS 实现起来很简单:加载原始文件,遍历所有工作表,创建新 Workbook,用 AddCopy() 方法复制工作表。具体步骤如下:
    1. 创建 Workbook 对象并加载 Excel 文件;
    2. 遍历工作簿中的所有 Worksheet;
    3. 创建新的 Workbook;
    4. 使用 AddCopy() 方法复制工作表;
    5. 保存生成的 Excel 文件。
    完整代码:
    from spire.xls import *
    from spire.xls.common import *
    
    # 创建 Workbook 对象并加载 Excel 文件
    workbook = Workbook()
    workbook.LoadFromFile("/input/示例.xlsx")
    
    # 设置拆分后文件的保存路径
    output_path = "/output/按表拆分/"
    
    # 遍历工作簿中的所有工作表
    for sheet in workbook.Worksheets:
    
        # 创建新的 Workbook 对象,并删除默认工作表
        new_workbook = Workbook()
        new_workbook.Worksheets.Clear()
    
        # 将当前工作表复制到新的工作簿中
        new_workbook.Worksheets.AddCopy(sheet)
    
        # 以当前工作表名称命名,并保存为独立的 Excel 文件
        new_workbook.Sa veToFile(
            output_path + sheet.Name + ".xlsx",
            FileFormat.Version2016
        )
    
        # 释放资源
        new_workbook.Dispose()
    
    workbook.Dispose()
    运行后,原 Excel 中的每个工作表都会单独保存成一个新文件,文件名就是工作表名。

    Python使用Spire.XLS自动化拆分Excel文件的四大场景实现详解

    通过 Python 按行拆分 Excel 文件

    除了按工作表拆分,按行拆分也很常见——当一个工作表数据量太大时,可以按固定行数切分成多个文件,方便后续处理。比如先获取总行数,设定每个文件包含多少行,然后通过 CopyRow() 方法把指定范围的数据复制到新工作簿。 实现步骤如下:
    1. 加载 Excel 文件;
    2. 获取工作表数据行数;
    3. 设置每个文件包含的行数;
    4. 创建新的 Workbook;
    5. 复制指定行数据并保存。
    下面是一个参考示例,演示了如何将第 1-5 行和第 6-11 行分别拆成两个文件(注意第二个文件需要复制表头):
    from spire.xls import *
    from spire.xls.common import *
    
    # 创建 Workbook 对象并加载 Excel 文件
    workbook = Workbook()
    workbook.LoadFromFile("/input/示例.xlsx")
    
    # 获取第一个工作表
    worksheet = workbook.Worksheets[0]
    
    # 设置文件保存路径
    folderPath = "/output/按行拆分/"
    
    # 将第 1-5 行拆分到新文件
    newWorkbook1 = Workbook()
    newWorkbook1.Worksheets.Clear()
    newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")
    
    for i in range(1, 6):
        worksheet.CopyRow(
            worksheet.Rows[i - 1],
            newWorksheet1,
            newWorksheet1.LastDataRow + 1,
            CopyRangeOptions.All
        )
    
    # 复制列宽
    for i in range(worksheet.Columns.Count):
        newWorksheet1.SetColumnWidth(
            i + 1,
            worksheet.GetColumnWidth(i + 1)
        )
    
    newWorkbook1.Sa veToFile(folderPath + "1-5行.xlsx", FileFormat.Version2016)
    newWorkbook1.Dispose()
    
    # 将第 6-11 行拆分到新文件(先复制表头)
    newWorkbook2 = Workbook()
    newWorkbook2.Worksheets.Clear()
    newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")
    
    # 复制表头(第1行)
    worksheet.CopyRow(
        worksheet.Rows[0],
        newWorksheet2,
        newWorksheet2.LastDataRow + 1,
        CopyRangeOptions.All
    )
    
    # 复制第6-11行数据
    for i in range(6, 12):
        worksheet.CopyRow(
            worksheet.Rows[i - 1],
            newWorksheet2,
            newWorksheet2.LastDataRow + 1,
            CopyRangeOptions.All
        )
    
    for i in range(worksheet.Columns.Count):
        newWorksheet2.SetColumnWidth(
            i + 1,
            worksheet.GetColumnWidth(i + 1)
        )
    
    newWorkbook2.Sa veToFile(folderPath + "6-11行.xlsx", FileFormat.Version2016)
    newWorkbook2.Dispose()
    
    workbook.Dispose()

    Python使用Spire.XLS自动化拆分Excel文件的四大场景实现详解

    通过 Python 按列拆分 Excel 文件

    有时候我们并不需要拆分整张表,而是想把其中某些列单独提取出来。比如一个表格里同时包含了员工基础信息、销售记录和财务数据,但这些东西需要分发给不同的人看。这时就可以按列的位置拆分,把指定范围内的列复制到新工作簿中。Spire.XLS 提供了 CopyColumn() 方法,能保留原有的单元格格式。 实现步骤:
    1. 创建新的 Workbook;
    2. 添加新的 Worksheet;
    3. 使用 CopyColumn() 复制目标列;
    4. 设置行高并保存文件。
    下面演示了将第 1-2 列、第 3-5 列和第 6 列分别拆成三个文件:
    from spire.xls import *
    from spire.xls.common import *
    
    workbook = Workbook()
    workbook.LoadFromFile("/input/示例.xlsx")
    worksheet = workbook.Worksheets[0]
    folderPath = "/output/按列拆分/"
    
    # 拆分第 1-2 列(A-B列)
    newWorkbook1 = Workbook()
    newWorkbook1.Worksheets.Clear()
    newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")
    
    for i in range(1, 3):
        worksheet.CopyColumn(
            worksheet.Columns[i - 1],
            newWorksheet1,
            newWorksheet1.LastDataColumn + 1,
            CopyRangeOptions.All
        )
    
    for i in range(worksheet.Rows.Count):
        newWorksheet1.SetRowHeight(i + 1, worksheet.GetRowHeight(i + 1))
    
    newWorkbook1.Sa veToFile(folderPath + "AB.xlsx", FileFormat.Version2016)
    newWorkbook1.Dispose()
    
    # 拆分第 3-5 列(C-E列)
    newWorkbook2 = Workbook()
    newWorkbook2.Worksheets.Clear()
    newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")
    
    for i in range(3, 6):
        worksheet.CopyColumn(
            worksheet.Columns[i - 1],
            newWorksheet2,
            newWorksheet2.LastDataColumn + 1,
            CopyRangeOptions.All
        )
    
    for i in range(worksheet.Rows.Count):
        newWorksheet2.SetRowHeight(i + 1, worksheet.GetRowHeight(i + 1))
    
    newWorkbook2.Sa veToFile(folderPath + "CDE.xlsx", FileFormat.Version2016)
    newWorkbook2.Dispose()
    
    # 拆分第 6 列(F列)
    newWorkbook3 = Workbook()
    newWorkbook3.Worksheets.Clear()
    newWorksheet3 = newWorkbook3.Worksheets.Add("Sheet1")
    
    worksheet.CopyColumn(
        worksheet.Columns[5],
        newWorksheet3,
        newWorksheet3.LastDataColumn + 1,
        CopyRangeOptions.All
    )
    
    for i in range(worksheet.Rows.Count):
        newWorksheet3.SetRowHeight(i + 1, worksheet.GetRowHeight(i + 1))
    
    newWorkbook3.Sa veToFile(folderPath + "F.xlsx", FileFormat.Version2016)
    newWorkbook3.Dispose()
    
    workbook.Dispose()

    Python使用Spire.XLS自动化拆分Excel文件的四大场景实现详解

    实践:通过 Python 按指定条件拆分 Excel

    前面介绍的几种拆分方式都是基于固定规则,但在实际工作中,更常见的需求是根据 Excel 某一列中的内容进行分类拆分。比如员工信息表里的“部门”列包含销售部、技术部、人事部等,希望能自动把同一个部门的数据整理到一个独立文件中;销售数据也可以按地区、月份生成不同报表。这种按条件拆分的方式更贴合实际,不用手动筛选复制,自动生成符合业务规则的独立文件。 下面以“按照员工部门拆分 Excel”为例。假设员工信息表里包含姓名、部门、职位等字段,想要自动生成:

    销售部.xlsx

    技术部.xlsx

    人事部.xlsx

    每个文件只保存对应部门的员工数据。 实现流程:
    1. 加载 Excel 文件;
    2. 指定拆分依据的列;
    3. 遍历数据行并获取分类值;
    4. 根据分类值创建新的 Workbook;
    5. 复制对应数据行;
    6. 保存生成的 Excel 文件。
    from spire.xls import *
    from spire.xls.common import *
    
    # 加载 Excel 文件
    workbook = Workbook()
    workbook.LoadFromFile("/员工信息.xlsx")
    
    # 获取第一个工作表
    worksheet = workbook.Worksheets[0]
    
    # 输出目录
    folderPath = "/output/按条件拆分/"
    
    # 用于保存不同部门对应的 Workbook
    department_books = {}
    
    # 获取总行数
    row_count = worksheet.Rows.Count
    
    # 设置按部门拆分(假设部门在第3列)
    department_column = 3
    
    # 遍历数据行(跳过表头)
    for i in range(1, row_count):
        # 获取部门名称
        department = worksheet.Range[i + 1, department_column].Value
    
        if department not in department_books:
            # 创建新的 Workbook
            newWorkbook = Workbook()
            newWorkbook.Worksheets.Clear()
            newWorksheet = newWorkbook.Worksheets.Add("Sheet1")
    
            # 复制表头
            worksheet.CopyRow(
                worksheet.Rows[0],
                newWorksheet,
                newWorksheet.LastDataRow + 1,
                CopyRangeOptions.All
            )
    
            department_books[department] = newWorkbook
    
        # 获取目标 Sheet
        newWorksheet = department_books[department].Worksheets[0]
    
        # 复制当前行
        worksheet.CopyRow(
            worksheet.Rows[i],
            newWorksheet,
            newWorksheet.LastDataRow + 1,
            CopyRangeOptions.All
        )
    
    # 保存文件
    for department, wb in department_books.items():
        wb.Sa veToFile(
            folderPath + department + ".xlsx",
            FileFormat.Version2016
        )
        wb.Dispose()
    
    workbook.Dispose()

    Python使用Spire.XLS自动化拆分Excel文件的四大场景实现详解

    总结

    Excel 拆分在数据整理中再常见不过了。通过 Python 结合 Spire.XLS,可以把原本需要手动复制、筛选、保存的步骤自动化,大幅提升效率。本文介绍了四种常见的拆分方式:
    • 按工作表拆分:适用于多个 Sheet 独立保存;
    • 按行拆分:适用于大型数据文件分割;
    • 按列拆分:适用于字段分类和权限管理;
    • 按条件拆分:适用于部门、地区、日期等实际业务场景。
    根据不同的数据结构和需求,选对拆分方式,就能让 Excel 处理变得更加高效省心。
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    Beamer 4 macOS版
    Beamer 4 macOS版

    Beamer 4是面向macOS的本地视频投屏工具,可将Mac中的影片投放到Apple TV、Chromecast及兼容设备,支持常见格式、多类字幕、环绕声、播放列表和电视遥控操作。

    Boom 3D macOS版
    Boom 3D macOS版

    Boom 3D macOS版是一款系统级音效增强工具,可为音乐、电影、游戏和流媒体提供3D虚拟环绕声、31段均衡器、音量增强及应用独立音量控制,并支持本地播放器与多种音频输出设备。

    Boris FX macOS版
    Boris FX macOS版

    Boris FX macOS版是一套面向剪辑、合成、调色及动态图形工作的专业后期工具,涵盖视觉特效、平面与三维跟踪、转描、画面修复、粒子动画和音频清理,可配合多种主流宿主软件使用。

    Capto macOS版
    Capto macOS版

    Capto 是面向 macOS 的屏幕截图、高清录屏与媒体编辑工具,支持区域及整屏捕获、网页长截图、双音轨处理、图片和视频标注、素材分类与多渠道分享,适合教师、学生、内容创作者及需要制作演示教程的用户。

    ChemDraw macOS版
    ChemDraw macOS版

    ChemDraw macOS版是一款面向化学学习、科研和制药工作的专业结构绘图工具,可创建分子、反应及生物聚合物图形,并提供结构整理、格式转换和科研成果展示能力。

    Cursor Crane macOS版
    Cursor Crane macOS版

    Cursor Crane 是一款仅面向 macOS 的键盘操控效率工具,可通过提示标签、网格、文字查找和窗口模式完成点击、滚动、定位与切换,并支持屏幕内容提取、脚本及工作流扩展。

    Deep Freeze 冰点还原 macOS版
    Deep Freeze 冰点还原 macOS版

    Deep Freeze 冰点还原 macOS版通过冻结系统配置,让受保护的Mac在重新启动后回到预设状态,并提供解冻空间、维护计划、密码保护及Apple Remote Desktop管理能力。

    Focusky macOS版
    Focusky macOS版

    Focusky macOS版是一款面向教学课件、商务汇报、产品展示和动画宣传内容的演示制作工具。它通过无限画布、路径编排、缩放旋转转场及多媒体编辑,将传统逐页幻灯片转化为更具空间感的动态演示。

    Folder Colorizer 2 macOS版
    Folder Colorizer 2 macOS版

    Folder Colorizer 2 macOS版是一款直观的文件夹外观定制工具,可更换颜色,添加表情、贴纸及图片背景,并支持批量处理、智能推荐和恢复默认样式,帮助用户更快辨认工作、学习与生活资料。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。

    AlwaysUp Windows版
    AlwaysUp Windows版

    AlwaysUp是一款面向Windows的系统服务注册与程序托管工具,可让普通应用、脚本及批处理在无人登录时随系统启动,并通过状态检测、异常重启、资源监控和邮件通知保障关键任务持续运行。

    AnyDesk Windows版
    AnyDesk Windows版

    AnyDesk Windows版是一款轻量化远程桌面与技术支持工具,可用于控制异地电脑、传输文件、远程打印及无人值守访问。它兼顾连接响应、安全权限和部署灵活性,适合个人远程办公、企业设备维护与客服支持。

    Boom 3D Windows版
    Boom 3D Windows版

    Boom 3D Windows版是一款面向音乐、电影和游戏场景的系统级音效增强工具,支持虚拟3D环绕声、31段均衡器、预设音效、应用音量控制及本地音乐播放,可配合耳机、扬声器和蓝牙耳机使用。

    Boris FX Windows版
    Boris FX Windows版

    Boris FX Windows版是一套服务于影视剪辑、视觉特效、运动跟踪、转描、图像修饰及音频修复的专业创作工具集合,可作为插件接入多种主流后期宿主,也包含可独立运行的应用,适合剪辑师、特效师与内容创作者使用。

    ChemDraw Windows版
    ChemDraw Windows版

    ChemDraw Windows版是一款面向化学研究、药物研发、材料科学和教学工作的专业结构绘图工具,可快速绘制分子、反应式及生物聚合物,并提供结构整理、格式转换、性质计算和科研文档协作能力。

    CODESOFT Windows版
    CODESOFT Windows版

    CODESOFT Windows版是一套企业级条码与RFID标签设计打印工具,可连接Excel、Access、SQL及云端数据源,支持变量、表单、GS1条码、数据库记录和多种工业打印机,适合制造、仓储、物流及合规标识场景。

    Deep Freeze 冰点还原 Windows版
    Deep Freeze 冰点还原 Windows版

    Deep Freeze 冰点还原 Windows版通过重启恢复技术保护系统盘及指定分区,自动撤销恶意程序、误操作和配置漂移造成的改动,并支持密码保护、解冻空间与多硬盘管理,适合学校机房、公共电脑、办公终端及家庭电脑使用。

    EDIUS Windows版
    EDIUS Windows版

    EDIUS 11 Windows版是一款面向影视制作、广播电视、纪录片、短视频及教育机构的专业非线性编辑工具,支持4K/8K、多格式混编、HDR调色、字幕、音频处理和后台渲染,并提供素材管理及丰富的导出预设。

    FastStone Capture Windows版
    FastStone Capture Windows版

    FastStone Capture Windows版是一款轻量级屏幕捕捉、录屏与图像编辑工具,可截取窗口、区域、菜单和滚动页面,并提供标注、模糊、取色、OCR、录音录像及多格式导出能力,适合办公说明、教程制作和问题反馈。

    Focusky Windows版
    Focusky Windows版

    Focusky Windows版是一款动画演示与交互课件制作工具,通过无限画布、缩放旋转镜头、模板素材和对象动画组织内容,可导入PPTX,并输出视频、EXE、PDF、网页等格式,适用于课堂教学、微课、商务汇报及产品展示。