Python高效提取与自动化处理Word表格的完整指南

 更新时间:2026年01月12日 14:21:30   作者:LSTM97  
在日常办公和自动化处理场景中,Word 文档(DOC/DOCX)依然是最常见的数据载体之一,本文将介绍如何使用Spire.Doc for Python从 Word 文档中逐个提取表格,并将表格内容导出为文本文件,有需要的可以了解下

在日常办公和自动化处理场景中,Word 文档(DOC/DOCX)依然是最常见的数据载体之一。许多业务数据、统计报表、合同条款或配置信息,往往以表格的形式存在于 Word 文档中。当我们需要对这些表格数据进行进一步处理(如导入数据库、转换为 Excel、生成报表或进行数据分析)时,手动复制粘贴显然效率低下,也容易出错。

借助 Python 以及专业的文档处理库,我们可以实现 自动化提取 Word 表格内容 ,并将其保存为结构化文本文件或其他格式。本文将详细介绍如何使用 Spire.Doc for Python ,从 Word 文档中逐个提取表格,并将表格内容导出为文本文件。

为什么选择 Spire.Doc for Python

在众多 Python 文档处理方案中,Spire.Doc for Python 是一款面向开发者的专业 Word 文档处理库,具备以下显著优势:

  • 无需依赖 Microsoft Word :纯 Python 实现,适合服务器和自动化环境
  • 支持完整 Word 结构 :段落、表格、页眉页脚、样式等均可访问
  • API 设计清晰 :面向对象,逻辑与 Word 文档结构高度一致
  • 稳定可靠 :适合批量处理与企业级应用场景

在提取表格这种涉及文档层级遍历的任务中,Spire.Doc 提供了非常直观的对象模型,使代码既清晰又易于维护。

实现思路概述

从 Word 中提取表格,本质上是对 Word 文档结构的逐层遍历。整体流程如下:

  • 加载 Word 文档
  • 遍历文档中的所有 Section(节)
  • 在每个 Section 中获取所有表格(Table)
  • 遍历表格中的行(Row)和单元格(Cell)
  • 读取单元格内的段落文本
  • 按行列结构拼接表格数据
  • 将每个表格保存为独立的文本文件

这种方式不仅能够完整保留表格结构,也便于后续扩展为 CSV、Excel 或数据库导入逻辑。

准备工作

在开始之前,请确保你的环境已准备就绪:

  • • Python 3.x
  • • 已安装 spire.doc(Spire.Doc for Python)

安装方式示例:

pip install spire-doc

安装完成后,即可在 Python 项目中直接引用相关模块。

示例代码:从 Word 提取表格并保存为文本文件

下面是完整的示例代码,用于从 Word 文档中提取所有表格,并将每个表格保存为一个 .txt 文件。

from spire.doc import *
from spire.doc.common import *

# 创建 Document 实例
doc = Document()

# 加载 Word 文档
doc.LoadFromFile("Input.docx") 

# 遍历文档中的所有节(Section)
for s in range(doc.Sections.Count):
    # 获取当前节
    section = doc.Sections.get_Item(s)
    # 获取当前节中的所有表格
    tables = section.Tables
    # 遍历当前节中的表格
    for i in range(0, tables.Count):
        # 获取表格对象
        table = tables.get_Item(i)
        # 用于存储当前表格数据的字符串
        tableData = ''
        # 遍历表格中的所有行
        for j in range(0, table.Rows.Count):
            # 遍历当前行中的所有单元格
            for k in range(0, table.Rows.get_Item(j).Cells.Count):
                # 获取单元格对象
                cell = table.Rows.get_Item(j).Cells.get_Item(k)
                # 用于存储单元格中的文本内容
                cellText = ''
                # 遍历单元格中的所有段落
                for para in range(cell.Paragraphs.Count):
                    paragraphText = cell.Paragraphs.get_Item(para).Text
                    cellText += (paragraphText + ' ')
                # 将单元格文本追加到表格数据字符串中
                tableData += cellText
                # 如果不是最后一个单元格,则添加制表符作为列分隔符
                if k < table.Rows.get_Item(j).Cells.Count - 1:
                    tableData += '\t'
            # 当前行结束后,添加换行符
            tableData += '\n'
    
        # 将表格数据保存为文本文件
        with open(f'output/Tables/WordTable_{s+1}_{i+1}.txt', 'w', encoding='utf-8') as f:
            f.write(tableData)

# 关闭文档,释放资源
doc.Close()

代码详解

下面我们对核心代码逻辑进行逐步解析,帮助你更好地理解其工作原理。

1. 加载 Word 文档

doc = Document()
doc.LoadFromFile("Input.docx")

这里创建了一个 Document 实例,并加载指定路径下的 Word 文件。Document 是 Spire.Doc 中表示整个 Word 文档的核心对象。

2. 遍历文档中的 Section

for s in range(doc.Sections.Count):
    section = doc.Sections.get_Item(s)

在 Word 中,文档可能由多个 Section 组成(例如分页、不同页眉页脚设置)。为了不遗漏任何表格,我们需要遍历所有 Section。

3. 获取并遍历表格

tables = section.Tables
for i in range(0, tables.Count):
    table = tables.get_Item(i)

每个 Section 都可能包含多个表格。通过 section.Tables 可以直接获取该节中的所有表格对象。

4. 遍历行和单元格

for j in range(0, table.Rows.Count):
    for k in range(0, table.Rows.get_Item(j).Cells.Count):
        cell = table.Rows.get_Item(j).Cells.get_Item(k)

表格由行和单元格组成。这里采用双层循环,确保按“行 → 列”的顺序读取数据,从而保持原有表格结构。

5. 读取单元格中的段落文本

for para in range(cell.Paragraphs.Count):
    paragraphText = cell.Paragraphs.get_Item(para).Text
    cellText += (paragraphText + ' ')

一个单元格中可能包含多个段落(例如手动换行)。因此,需要遍历 cell.Paragraphs,并将所有段落文本拼接起来,确保内容完整。

6. 拼接表格数据

tableData += cellText
tableData += '\t'
tableData += '\n'
  • • 使用 制表符(\t) 分隔列
  • • 使用 换行符(\n) 分隔行

这种格式非常适合后续转换为 Excel、CSV,或直接导入数据库。

7. 保存为文本文件

with open(f'output/Tables/WordTable_{s+1}_{i+1}.txt', 'w', encoding='utf-8') as f:
    f.write(tableData)

每个表格都会被单独保存为一个文本文件,文件名中包含 Section 和 Table 的索引,便于区分来源。

应用场景拓展

基于本文示例代码,你可以轻松扩展到更多实际应用场景,例如:

  • 将提取的表格数据转换为 CSV 或 Excel
  • 自动解析 Word 报表并导入 数据库系统
  • 批量处理合同或业务文档中的表格信息
  • 与数据分析或 BI 工具进行对接

Spire.Doc for Python 提供的丰富 API,使这些扩展变得非常自然。

总结

本文介绍了如何使用 Spire.Doc for Python 从 Word 文档中自动提取表格内容,并将其保存为文本文件。通过对 Word 文档结构(Section、Table、Row、Cell、Paragraph)的逐层遍历,我们能够完整、准确地获取表格数据,并为后续的数据处理和自动化流程打下坚实基础。

如果你正在寻找一种 稳定、高效、无需依赖 Office 环境 的 Word 表格提取方案,那么 Spire.Doc for Python 无疑是一个值得考虑的选择。

以上就是Python高效提取与自动化处理Word表格的完整指南的详细内容,更多关于Python Word处理的资料请关注脚本之家其它相关文章!

相关文章

  • Python中常见的异常总结

    Python中常见的异常总结

    当 Python 检测到一个错误时,解释器就会指出当前流已经无法继续执行下去,这时候就出现了异常。
    2018-02-02
  • 使用Python和Tesseract实现验证码识别功能

    使用Python和Tesseract实现验证码识别功能

    验证码识别是一个常见且实用的技术需求,尤其是在自动化测试和数据采集场景中,通过开源 OCR工具 Tesseract,结合 Python 的强大生态,我们可以高效实现验证码识别任务,本篇博客将以详细步骤和代码示例,介绍如何使用 Python 和 Tesseract 实现验证码识别
    2025-01-01
  • python优化数据预处理方法Pandas pipe详解

    python优化数据预处理方法Pandas pipe详解

    在本文中,我们将重点讨论一个将多个预处理操作组织成单个操作的特定函数:pipe。我将通过示例方式来展示如何使用它,让我们从数据创建数据帧开始吧
    2021-11-11
  • python使用递归的方式建立二叉树

    python使用递归的方式建立二叉树

    这篇文章主要介绍了python使用递归的方式建立二叉树,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python多线程threading.Lock锁用法实例

    python多线程threading.Lock锁用法实例

    这篇文章主要介绍了python多线程threading.Lock锁用法,以实例形式对python锁的用法进行了较为详细的分析,需要的朋友可以参考下
    2014-11-11
  • Python中defaultdict与lambda表达式用法实例小结

    Python中defaultdict与lambda表达式用法实例小结

    这篇文章主要介绍了Python中defaultdict与lambda表达式用法,结合实例形式分析了Python中defaultdict与lambda表达式的功能、使用方法及相关注意事项,需要的朋友可以参考下
    2018-04-04
  • 详解python如何在django中为用户模型添加自定义权限

    详解python如何在django中为用户模型添加自定义权限

    这篇文章主要介绍了python如何在django中为用户模型添加自定义权限,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 深入理解python多线程编程

    深入理解python多线程编程

    进程是资源分配的最小单位,他是操作系统进行资源分配和调度运行的基本单位。通俗理解:一个正在运行的一个程序就是一个进程,本文重点给大家介绍python多线程编程的相关知识,感兴趣的朋友一起看看吧
    2021-04-04
  • python3-flask-3将信息写入日志的实操方法

    python3-flask-3将信息写入日志的实操方法

    在本篇文章里小编给大家整理的是关于python3-flask-3将信息写入日志的实操方法,有兴趣的朋友们学习下。
    2019-11-11
  • 代码分析Python地图坐标转换

    代码分析Python地图坐标转换

    这篇文章主要介绍了Python地图坐标转换的相关知识点以及分享了相关的代码实例,对此有兴趣的朋友学习下。
    2018-02-02

最新评论