在日常办公和自动化处理场景中,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处理的资料请关注代码网其它相关文章!
发表评论