惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
博客园 - 叶小钗
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
IT之家
IT之家
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
爱范儿
爱范儿
罗磊的独立博客
雷峰网
雷峰网
量子位
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Hugging Face - Blog
Hugging Face - Blog
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
宝玉的分享
宝玉的分享
P
Privacy International News Feed
S
Schneier on Security
W
WeLiveSecurity
H
Heimdal Security Blog
I
Intezer
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
美团技术团队
N
News | PayPal Newsroom
T
The Exploit Database - CXSecurity.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
aimingoo的专栏
aimingoo的专栏
S
SegmentFault 最新的问题
Project Zero
Project Zero
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

博客园 - E-iceblue

如何使用 Python 快速将 Excel 转换为 XML 文件 Python 办公自动化:Word 文档加密与权限控制实战 在 Python 中快速锁定 Excel 单元格与行列 使用 Python 在 Word 文档中添加或删除文本框 如何使 PDF 可编辑 - Python 教程详解 将 Excel 表格插入 Word 文档的三种实用方案(Python 自动化) Python 办公自动化:如何轻松调整 Word/PDF 页面大小为 Legal 尺寸 数字签名 vs 电子签名:区别与如何在文件中插入数字签名 Python 教程:快速复制 Excel 工作表 如何对比 Excel 两列数据的不同:从基础操作到 Python 自动化 如何提取 Word 文档中的表格并导出为 Excel(Python 教程) 使用 Python 在 PowerPoint 中添加或移除背景图和背景颜色 在 Java 中使用 Spire.PDF 合并 PDF 文档(含加密与压缩处理) 在 Python 中自动化转化 Markdown 为 HTML 【详细教程】 Python 控制 PDF 页面大小、页边距、页面方向与缩放 Python 办公自动化:快速将 HTML 转换为 PDF 格式 在 Python 中给 PDF 设置背景图或背景色 在 Python 中转换 XML 为 PDF 文档:基础转换与转换设置 在 Python 中对比 Word 文档:自动生成修订报告【教程向】 Excel 删除空白行的 5 种方法 【手动与 Python 自动化】 删除 Excel 表格中的重复行 【4 种实用方法】 从纯文本到精美文档:TXT 转 PDF 的三种高效方案 Python 实现 PDF 表单域的自动化创建与智能填充 PPT 批量转图片:在 Web 预览中实现翻页效果(C#/VB.NET) 为什么生成的条形码扫不出来?从静区、分辨率和色彩三个方向解析条码识别率 Excel vs CSV:在系统数据处理中该如何选择?(附格式转换代码示例) 【2026 最新教程】Java 自动化提取 PDF 表格:从文本到 Excel/CSV 的全场景实现 零成本实现文档智能:本地化 OCR 提取与 AI 处理全流程实战 PPT 智能提取与分析实战:把演示文档变成结构化数据 为什么 PDF 文本能看到,却提取不到?从开发者角度解析与解决方案 PDF 文件为什么打不开?常见原因与解决思路 PDF vs PDF/A:区别、场景与常用转换方法(2026 全面解读) 使用 Java 将 PowerPoint 转换为 PDF 的完整指南 如何在 Python 中轻松添加、隐藏和删除幻灯片
Python 拆分 Excel 文件:使用 Spire.XLS 实现按工作表、行、列和条件拆分
E-iceblue · 2026-07-24 · via 博客园 - E-iceblue

在日常办公和数据处理中,Excel 凭借其直观的表格结构和丰富的数据处理功能,被广泛应用于报表统计、数据管理以及信息整理等场景。但随着数据规模不断增加,一个 Excel 文件中可能包含多个工作表、大量数据记录,或者不同类型的数据内容。

但当我们需要进一步整理这些数据时,直接在 Excel 中操作往往会比较繁琐。例如,将不同工作表单独保存、按照固定行数拆分大型文件,或者根据某个字段生成多个独立文件。如果全都依靠手动复制粘贴完成,不仅效率较低,还容易出现数据遗漏。而通过 Python 自动化拆分 Excel 文件,可以有效减少重复操作,提高数据处理效率。

在今天的教程中,我们将借助 Spire.XLS for Python 介绍如何在 Python 环境中实现 Excel 拆分。文章将分别展示按照工作表、行、列以及指定条件拆分 Excel 的方法,帮助你根据实际需求选择合适的处理方式。

环境准备

在开始拆分 Excel 文件之前,需要先安装 Spire.XLS for Python。该组件提供了丰富的 Excel 文档处理接口,可以帮助开发者在不依赖 Microsoft Office 的情况下完成 Excel 创建、读取、修改以及格式转换等操作。

你可以通过 pip install spire.xls 快速安装 Spire.XLS for Python,此外该组件还提供免费版,适合用于小型项目和测试。

安装完成后,导入相关模块即可开始使用:

from spire.xls import *
from spire.xls.common import *

在本文中,我们主要会用到以下几个核心对象:

对象 作用
Workbook 表示整个 Excel 工作簿
Worksheet 表示工作簿中的工作表
Range 表示单元格区域

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

一个 Excel 工作簿通常可能包含多个工作表,例如不同月份的数据、不同地区的报表等。如果希望将每个工作表单独保存为一个 Excel 文件,可以通过遍历 Workbook 中的 Worksheet 实现自动拆分。

使用 Spire.XLS 时,只需要加载原始文件,遍历所有工作表,然后创建新的 Workbook 并复制对应工作表即可。

主要实现步骤如下:

  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.SaveToFile(
        output_path + sheet.Name + ".xlsx",
        FileFormat.Version2016
    )

    # 释放资源
    new_workbook.Dispose()

workbook.Dispose()

运行代码后,原 Excel 中的每个工作表都会被单独保存为一个新的工作簿。

按工作表拆分 Excel 文件

通过 Python 按行拆分 Excel 文件

除了按照工作表拆分外,还可以根据数据行数量对 Excel 文件进行拆分。当一个工作表包含大量数据时,可以将其按照指定行数拆分成多个文件,方便后续管理和处理。

使用这种方式时,需要获取工作表总行数,并设置每个文件包含的数据行数量,然后通过 CopyRow() 方法将指定范围的数据复制到新的工作簿中。

实现步骤如下:

  1. 加载 Excel 文件;
  2. 获取工作表数据行数;
  3. 设置每个文件包含的行数;
  4. 创建新的 Workbook;
  5. 复制指定行数据并保存。

下面是可参考的完整代码示例:

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 行拆分到新文件

# 创建新的 Workbook,并删除默认工作表
newWorkbook1 = Workbook()
newWorkbook1.Worksheets.Clear()

# 添加新的工作表
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")

# 复制第 1-5 行数据
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.SaveToFile(
    folderPath + "1-5行.xlsx",
    FileFormat.Version2016
)

newWorkbook1.Dispose()


# 将第 6-11 行拆分到新文件

# 创建新的 Workbook,并清除默认工作表
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.SaveToFile(
    folderPath + "6-11行.xlsx",
    FileFormat.Version2016
)

newWorkbook2.Dispose()
workbook.Dispose()

按行拆分 Excel 工作表

通过 Python 按列拆分 Excel 文件

在处理 Excel 数据时,有时我们并不需要拆分整个工作表,而是希望将其中部分列单独提取出来。例如,一个表格中同时包含员工基础信息、销售记录和财务数据,但这些内容需要分别提供给不同人员查看。

这种情况下,可以按照列的位置拆分 Excel,将指定范围内的列复制到新的工作簿中。Spire.XLS 提供了 CopyColumn() 方法,可以方便地复制目标列,同时保留原有单元格格式。

实现步骤如下:

  1. 创建新的 Workbook;
  2. 添加新的 Worksheet;
  3. 使用 CopyColumn() 复制目标列;
  4. 设置行高并保存文件。

完整代码示例如下:

from spire.xls import *
from spire.xls.common import *

# 创建 Workbook 对象并加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile(
    "/input/示例.xlsx"
)

# 获取第一个工作表
worksheet = workbook.Worksheets[0]
# 设置输出路径
folderPath = "/output/按列拆分/"


# 拆分第 1-2 列(A-B列)

# 创建新的 Workbook,并删除默认工作表
newWorkbook1 = Workbook()
newWorkbook1.Worksheets.Clear()

# 添加新的工作表
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")

# 复制第1-2列
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.SaveToFile(
    folderPath + "AB.xlsx",
    FileFormat.Version2016
)

newWorkbook1.Dispose()


# 拆分第 3-5 列(C-E列)

# 创建一个 Workbook,并删除默认工作表
newWorkbook2 = Workbook()
newWorkbook2.Worksheets.Clear()

# 添加新的工作表
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")

# 复制第3-5列
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.SaveToFile(
    folderPath + "CDE.xlsx",
    FileFormat.Version2016
)

newWorkbook2.Dispose()

# 拆分第 6 列(F列)

# 创建一个 Workbook,并删除默认工作表
newWorkbook3 = Workbook()
newWorkbook3.Worksheets.Clear()
# 添加新的工作表
newWorksheet3 = newWorkbook3.Worksheets.Add("Sheet1")

# 复制第6列
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.SaveToFile(
    folderPath + "F.xlsx",
    FileFormat.Version2016
)

newWorkbook3.Dispose()
workbook.Dispose()

按列拆分 Excel 工作表

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

相比上面我们介绍的固定规则,在实践中更常见的是根据 Excel 某一列中的数据内容进行分类拆分。例如,员工信息表中的“部门”列包含销售部、技术部、人事部等不同值,希望自动将属于同一部门的数据整理到一个独立文件中;销售数据也可以按照地区、月份等条件生成不同报表。

按条件拆分 Excel 工作表的方式更加贴合实际需求。它可以根据 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

# 设置按部门拆分
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.SaveToFile(
        folderPath + department + ".xlsx",
        FileFormat.Version2016
    )
    wb.Dispose()

workbook.Dispose()

按条件拆分 Excel 文件

总结

Excel 拆分是数据整理过程中非常常见的需求。通过 Python 结合 Spire.XLS,可以将原本需要手动完成的复制、筛选和保存操作自动化,大幅提高处理效率。

本文介绍了四种常见的 Excel 拆分方式:

  • 按工作表拆分:适用于多个 Sheet 独立保存;
  • 按行拆分:适用于大型数据文件分割;
  • 按列拆分:适用于字段分类和权限管理;
  • 按条件拆分:适用于部门、地区、日期等实际业务场景。

根据不同的数据结构和使用需求,选择合适的拆分方式,可以更加高效地完成 Excel 文件处理任务。