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

当前位置:

首页 > 编程开发 > 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 处理变得更加高效省心。
本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
编程开发 Python
相关文章 更多
精品专题 更多
装机必备

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

Windows

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

macOS软件

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

IOS软件

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

AI

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

Mac软件 更多
Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Menuist
Menuist

Menuist 是一款面向 macOS 的 Finder 右键菜单增强工具,主要用来补充新建文件、快捷导航等常用操作,让日常文件管理和访问路径时更高效、更顺手。

WINDOWS 更多
Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

PinStack
PinStack

PinStack是一款轻量级的Windows平台剪贴板管理工具,优化您的剪贴板使用体验。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。