使用 Python 按页或节拆分 Word 文档

发布时间:2026/10/15 15:52:27

使用 Python 按页或节拆分 Word 文档 文档处理场景中经常需要将一份大的 Word 文档拆分成多个独立文件比如把一份几百页的报告按章节拆分或者提取指定页码范围单独分发。使用 Python 处理 Word 文档常见方案有python-docx、Spire.Doc for Python等。python-docx更擅长段落级别的读写但原生不支持直接获取文档渲染后的分页信息而Spire.Doc for Python可以直接读取文档的页面布局与文档节Section结构支持两种常用拆分策略按页面范围拆分依据文档最终渲染后的页面布局提取指定页码区间生成新文档按文档节Section拆分根据 Word 分节符把每一节单独保存为文件适合按章节划分的文档。说明Spire.Doc for Python 是独立文档处理库运行环境无需安装 Microsoft Word。环境准备通过 pip 直接安装依赖包pip install Spire.Doc方案一按页面范围拆分 Word 文档ExtractPages(startIndex, count)方法可以按照文档渲染后的页面布局提取一段连续页面生成新文档。页面索引从 0 开始startIndex是起始页索引count为要提取的页面数量。示例需求将文档前 3 页提取为一个文件剩余页面保存为另一个文件。from spire.doc import * # Load the Word document doc Document() doc.LoadFromFile(input.docx) # Extract pages 1-3 first_part doc.ExtractPages(0, min(3, doc.PageCount)) first_part.SaveToFile(Page1-3.docx, FileFormat.Docx) first_part.Dispose() # Extract the remaining pages if the document has more than 3 pages if doc.PageCount 3: second_part doc.ExtractPages(3, doc.PageCount - 3) second_part.SaveToFile(Page4-End.docx, FileFormat.Docx) second_part.Dispose() doc.Dispose()代码说明doc.LoadFromFile(input.docx)加载源 Word 文档doc.PageCount获取文档总页数min(3, doc.PageCount)做边界保护避免文档总页数不足 3 页时报错ExtractPages返回新的 Document 对象调用SaveToFile保存为 docxDispose()释放文档资源避免内存占用。注意按页面拆分是基于文档最终排版布局。文档字体、图片、页面边距变化都会影响分页结果和 Word 打开后看到的页面保持一致。方案二按文档节Section拆分 Word 文档Word 的节Section由分节符定义常用于区分不同章节、不同页眉页脚、横竖混排等内容。适合书籍、论文、手册这类天然按章节使用分节符划分的文档。思路遍历文档所有 Section将每一个 Section 克隆并添加到新文档对象单独保存为独立文件。from spire.doc import * # Load the Word document doc Document() doc.LoadFromFile(Sample.docx) # Split the document by section for i in range(doc.Sections.Count): new_doc Document() # Clone the current section and add it to the new document new_doc.Sections.Add(doc.Sections.get_Item(i).Clone()) # Save the section as an individual Word document new_doc.SaveToFile( foutput/SplitDocument/SplitBySectionBreak_{i1}.docx ) new_doc.Close() doc.Close()代码说明doc.Sections.Count获取文档内总节数doc.Sections.get_Item(i).Clone()克隆当前节。克隆可以完整保留该节的页面设置、页眉页脚、样式循环内新建空白文档把克隆后的节添加进去保存为独立文件new_doc.Close()关闭子文档释放资源。提示使用前需要手动创建output/SplitDocument目录否则保存文件会抛出路径不存在异常。两种拆分方式对比拆分方式拆分依据适用场景局限性按页面范围拆分文档渲染后的页面布局提取固定页码区间、按页数切割文档文档内容修改后分页位置会变化按节拆分Word 分节符文档使用分节符划分章节、页眉页脚独立如果文档没有插入分节符则只有 1 个节无法拆分常见注意事项资源释放Document 对象使用完毕后务必调用Dispose()/Close()长时间批量处理文档时防止内存泄漏目录提前创建输出文件到子目录时需要使用os.makedirs()创建文件夹试用版限制Spire.Doc 试用版本会在输出文档添加水印并存在部分功能限制生产环境使用需要参考官方授权说明文件编码与路径Windows 环境下中文路径建议尽量使用英文路径避免编码问题。扩展思路批量拆分遍历文件夹下所有.docx文件循环执行拆分脚本单页拆分循环调用ExtractPages(i,1)每一页保存为独立文档混合策略先按节拆分再对拆分后的单个文档做页面提取。总结Spire.Doc for Python 提供了两种简单直接的 Word 文档拆分能力按页面范围适合根据可视化页面切割按节拆分适合基于文档结构分节符的章节拆分。几十行代码即可完成自动化文档拆分省去人工复制文档的重复工作适合集成到自动化办公脚本、数据处理流水线中。如果你需要我可以再补充完整可运行批量单页拆分脚本或者增加自动创建输出目录、异常捕获的增强版本代码。
延伸阅读

更多相关文章

2026/10/15 15:47:26

Qt5圆形环状菜单:解决工业HMI与车载触摸误触的嵌入式交互方案

简介:本资源是一份基于Qt5实现的圆形环状菜单自定义控件完整工程,面向Qt中级开发者及GUI界面设计学习者,解决传统线性菜单交互单一、视觉表现力不足的问题,适用于桌面端工具类软件、仪表盘系统或需要高辨识度操作入口的嵌入式人机…

2026/10/15 16:48:11

C# WinForms接口调试工具:HttpClient+SQLite工程化实践

简介:这是一款基于C#开发的轻量级Windows桌面接口测试工具,面向.NET初学者、Web API开发者及测试人员,用于快速验证HTTP接口功能与响应行为。工具采用WinForm框架构建图形界面,原生支持GET、POST、PUT、DELETE四种标准请求方法&am…

2026/10/15 16:48:11

从App到Unity:认知迁移、组件驱动与AI辅助实战

写了几年 App,第一次正儿八经打开 Unity 的时候,我盯着空荡荡的编辑器界面愣了好一会儿。脑子里全是Activity、ViewController、RecyclerView这套东西,一时不知道往哪儿放。后来想通了:从 App 开发转到 Unity 游戏开发&#xff0c…

2026/10/15 16:48:11

从飞智能MEGA1发布半年:客户最关心的5个问题

一、开头:从一次客户回访说起2026年5月,从飞智能产品团队回访了去年11月首批购买MEGA1边缘AI算力平板的12家客户。"最初选择MEGA1,是因为它需要同时处理8路摄像头数据做视觉AI识别,"一位智慧矿山客户的技术总监说&#…

2026/10/15 16:48:11

Electron Shared API设计指南:类型契约、Preload封装与主进程治理

1. 为什么“Shared API”是Electron项目里最容易被忽视的命门Electron开发者常陷入一个典型误区:把主进程当成“后台服务”,把渲染进程当成“前端页面”,然后用ipcRenderer.send和ipcMain.on像发微信消息一样来回传数据。我见过太多项目&…

2026/10/15 16:48:11

STM32 IIC驱动PCF8563时钟芯片:从时序到代码的完整指南

简介:这份资源面向使用STM32进行嵌入式开发的工程师与学习者,提供通过IIC总线驱动PCF8563实时时钟芯片的完整程序代码,可解决低功耗时钟日历功能在单片机项目中的集成问题,适用于智能仪表、数据记录、便携设备等需要精准计时的场景…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/15 0:02:22

防关联浏览器哪个好?三款产品实测差异解析

新手做多店铺,最纠结的就是防关联浏览器选哪个。飞跨、网易、站斧这三款被问得最多,先给结论:要一体化省心、长期便宜,选站斧;要网易招牌和稳,选网易;预算紧做东南亚 Lazada,选飞跨。…

2026/10/15 0:02:22

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成 一、技术背景 大模型(LLM)在通用场景下表现强大,但当我们将 GPT-4 或 Qwen 直接用于生成影刀RPA操作指令和 XPath 定位时,准确率通常只有 40%-60%。原因…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑