news 2026/7/2 2:45:04

如何提取 Word 文档中的表格并导出为 Excel(Python 教程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何提取 Word 文档中的表格并导出为 Excel(Python 教程)
  • VBA (Visual Basic for Applications):Office 自带的脚本语言,可以快速将 Word 中的表格导出。虽然无需安装第三方库,但其语法陈旧、调试困难,且高度依赖 Microsoft Office 环境,无法在没有安装 Office 的服务器或 Linux 环境上运行,具有一定的设备局限性。
  • 开源 Python 库(如 python-docx):这类工具灵活性高,但在处理复杂格式(如嵌套表格、复杂的行列跨度映射)时,往往需要编写大量底层逻辑代码,开发成本较高,需要具备一定的编程知识。
  • 专业类库(Spire 系列组件):功能强大、API 简单易懂。它最大的优势在于独立性(无需安装 Office)和高集成度。它将复杂的 Word DOM 结构映射与 Excel 坐标系转换进行了底层封装,开发者只需通过简单的 API 调用,就可以精准保留原文档的逻辑结构和文本格式。

方案对比表:

维度手动操作VBA 宏开源 Python 库Spire 系列专业组件
执行效率极低极高
环境依赖需人工参与需安装 Office需配置多种依赖独立运行(零依赖)
合并单元格支持差(易乱序)较好一般(需自行实现逻辑)完美支持
复杂场景适配较难易(API 高级封装)

综合来看,对于追求高效率和系统稳定性的企业级开发,使用Spire.Doc for Python配合Spire.XLS for Python是当前最优的实战选型。

环境准备

在开始编写脚本之前,请确保你的 Python 环境中已安装相关组件。这两个库分别负责解析 Word 的流式文档结构和构建 Excel 的行列坐标体系:

pip install Spire.Doc pip install Spire.XLS

你可以分别安装 Word 和 Excel 组件,也可以直接安装 Spire.Office for Python,它包含了 Spire.Doc for Python,Spire.XLS for Python,Spire.Presentation for Python 和 Spire.PDF for Python。此外所有组件都提供免费版用于小项目或测试。

如何构建 Python 导出表格的代码

为了让你更清晰地理解 Spire.Doc 和 Spire.XLS 导出 Word 表格的逻辑,我们将整个实现过程拆解为以下核心步骤:

1. 引入必要的类库

首先,我们需要在脚本开头引入 Spire 的核心模块。通过引入spire.docspire.xls及其通用常量模块,我们才能在 Python 中调用其封装好的文档处理引擎,从而实现对 Word DOM 树的解析和 Excel 工作簿的构建。

from spire.doc import * from spire.doc.common import * from spire.xls import * from spire.xls.common import * import os

2. 初始化对象与加载源文件

分别创建DocumentWorkbook对象。随后,使用LoadFromFile方法加载待处理的源 Word 文档,并调用Worksheets.Clear()移除工作簿中默认生成的空白表,以确保输出结果不受默认工作表的干扰。

# 创建 Word 文档对象并加载文件 document = Document() document.LoadFromFile("E:/input/项目进度.docx") # 创建 Excel 工作簿并清空默认工作表 workbook = Workbook() workbook.Worksheets.Clear()

3. 遍历 Word 文档多层级结构

Word 的数据存储具有明显的层级性(Section > Table > Row > Cell)。我们需要使用嵌套循环依次遍历文档中的Section (节)Table (表格)。对于每一个发现的表格,我们通过workbook.Worksheets.Add()动态创建一个工作表,并通过sheet_index实现自动命名,确保一表一页。

sheet_index = 0 for s in range(document.Sections.Count): section = document.Sections.get_Item(s) tables = section.Tables for t in range(tables.Count): table = tables.get_Item(t) # 动态创建工作表并递增索引 sheet = workbook.Worksheets.Add(f"Table_{sheet_index + 1}") # ... (后续数据提取) sheet_index += 1

4. 提取单元格文本与格式映射

由于 Word 单元格内可能包含多个段落,所以我们需要遍历Paragraphs集合并手动拼接换行符\n,以保留文本的原始换行结构。最后,通过Style.WrapText = True开启 Excel 的自动换行功能。

# 遍历行与列 for r in range(table.Rows.Count): row = table.Rows.get_Item(r) for c in range(row.Cells.Count): cell = row.Cells.get_Item(c) cell_text = "" for p in range(cell.Paragraphs.Count): paragraph = cell.Paragraphs.get_Item(p) cell_text += paragraph.Text.strip() + "\n" # 写入 Excel 坐标并设置换行 sheet.Range[r + 1, c + 1].Text = cell_text.strip() sheet.Range[r + 1, c + 1].Style.WrapText = True

5. 自动化布局优化与资源释放

数据填充完成后,利用AutoFitColumns()AutoFitRows()方法让程序自动根据内容调整列宽和行高。最后释放内存,确保系统资源回收。

完整代码示例

将上述的步骤整合,即可得到这个高效的 Word 表格导出脚本:

from spire.doc import * from spire.doc.common import * from spire.xls import * from spire.xls.common import * import os # 创建 Word 文档对象并加载文件 document = Document() document.LoadFromFile("/input/项目进度.docx") # 创建 Excel 工作簿并删除默认工作表 workbook = Workbook() workbook.Worksheets.Clear() # 遍历 Word 文档中的所有节 sheet_index = 0 for s in range(document.Sections.Count): section = document.Sections.get_Item(s) # 获取当前节中的所有表格 tables = section.Tables for t in range(tables.Count): # 获取当前表格 table = tables.get_Item(t) # 新建工作表 sheet = workbook.Worksheets.Add(f"Table_{sheet_index + 1}") # 遍历表格行 for r in range(table.Rows.Count): row = table.Rows.get_Item(r) # 遍历单元格 for c in range(row.Cells.Count): cell = row.Cells.get_Item(c) # 提取单元格中的文本 cell_text = "" for p in range(cell.Paragraphs.Count): paragraph = cell.Paragraphs.get_Item(p) cell_text += paragraph.Text.strip() + "\n" # 去除末尾换行 cell_text = cell_text.strip() # 写入 Excel 单元格 sheet.Range[r + 1, c + 1].Text = cell_text # 设置自动换行 sheet.Range[r + 1, c + 1].Style.WrapText = True # 自动调整列宽行高 sheet.AllocatedRange.AutoFitColumns() sheet.AllocatedRange.AutoFitRows() sheet_index += 1 # 保存为 Excel 文件 workbook.SaveToFile("/output/word表格.xlsx", ExcelVersion.Version2016) document.Close() workbook.Dispose()

下面是原始 Word 文档与提取到的表格的对比示意图:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 2:45:05

AI编曲工具实战:从入门到专业音乐制作

1. 项目概述:AI编曲如何颠覆传统音乐制作流程十年前我第一次进录音棚帮朋友做伴奏,看到报价单时差点从椅子上摔下来——简单的钢琴鼓点编曲居然要价8000元。如今AI技术让音乐制作的门槛降低了至少90%,一个完全不懂乐理的小白用对工具也能在半…

作者头像 李华
网站建设 2026/7/2 2:40:21

C++集成OpenSSL实现RSA公钥加密:从原理到工程实践

1. 项目概述:为什么要在C里用OpenSSL玩转公钥加密?如果你正在用C开发一个需要安全传输数据的应用,比如一个客户端-服务器架构的聊天工具,或者一个需要保护本地配置文件的桌面软件,那么“公钥加密,私钥解密”…

作者头像 李华
网站建设 2026/7/2 2:39:34

如何彻底解决 AI 编程的连贯性难题

在生成式 AI 席卷软件工程的今天,越来越多的开发者习惯了让 AI 当自己的“结对编程伙伴”(Pair Programmer)。从几行代码的自动补全,到整个架构模块的自动生成,AI 的生产力毋庸置疑。然而,几乎所有深度依赖…

作者头像 李华
网站建设 2026/7/2 2:37:43

手机磁吸转轴支架出厂检验全解:5 大类必检项目与 4 家厂商品控体系对比

硬件质量工程师验收参考 | 含合格标准与品控甄别方法手机磁吸转轴支架属于精密功能结构件,其尺寸精度、扭力稳定性、磁吸匹配度与使用寿命,直接决定终端产品的使用体验与可靠性。完善的出厂检验是品质管控的最后一道防线,也是批量供货一致性的…

作者头像 李华
网站建设 2026/7/2 2:37:11

Burp Suite安全测试实战:从零掌握Web渗透核心工作流与高阶技巧

1. 项目概述:为什么每个安全测试者都需要掌握Burp Suite?如果你刚接触Web安全测试,或者想从简单的漏洞扫描工具转向更深入的手动测试,那么Burp Suite几乎是你绕不开的一个名字。它不是那种一键扫描、生成报告就完事的“傻瓜式”工…

作者头像 李华
网站建设 2026/7/2 2:36:29

Frida内存操作避坑指南:从原理到实战的逆向分析核心技能

1. 项目概述:为什么Frida内存操作是逆向的“双刃剑”?在移动安全和逆向分析的圈子里,Frida早已不是个陌生的名字。它就像一把瑞士军刀,功能强大,尤其是其动态插桩和内存操作能力,让我们能在运行时窥探和修改…

作者头像 李华