word 文档中常包含以表格形式呈现的各种数据,然而,由于 word 文档中的表格结构相对简单,用户在 word 文档中难以进行复杂的表格格式处理与数据分析。提取这些表格中的数据并写入到其他更适合表格数据处理的文件格式中,能够使用户享受到数据的筛选、排序以及公式计算等复杂功能,还能提升数据处理的效率。本文将介绍如何使用 spire.doc for python 从 word 文档中提取表格数据,并写入文本及 excel 工作表等其他格式的文件中,实现数据提取与写入的自动化。
安装 spire.doc for python
本教程需要使用 spire.doc for python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 windows 中。
pip install spire.doc
如果您不确定如何安装,请参考:如何在 windows 中安装 spire.doc for python
用 python 提取 word 文档表格并写入文本文件
spire.doc for python 中的 section.tables 属性可以用于获取 word 文档中某一节内的所有表格,并返回一个表格集合。获取到所有表格后,开发人员可以使用 itable 类下的属性和方法访问表格中的数据,并将这些数据写入到文本文件,从而实现将 word 文档中的表格转换为文本文件。
从 word 文档中提取表格并写入文本文件的操作步骤如下:
- 创建 document 类的实例,并使用 document.loadfromfile() 方法加载 word 文档。
- 遍历文档中的节,通过 section.tables 属性获取每个节的所有表格。
- 遍历获取到的所有表格,并为每个表格创建一个字符串对象。
- 遍历每个表格中的行,以及每行中的单元格。通过 tablecell.paragraphs[].text 属性获取每个单元格的文本,并将单元格文本添加到字符串中。
- 将每个字符串保存到文本文件。
- python
from spire.doc import *
from spire.doc.common import *
# 创建一个 document 实例
doc = document()
# 加载一个 word 文档
doc.loadfromfile("示例.docx")
# 遍历节(section)
for s in range(doc.sections.count):
# 获取一个节(section)
section = doc.sections.get_item(s)
# 获取节(section)中的表格(tables)
tables = section.tables
# 遍历表格(tables)
for i in range(0, tables.count):
# 获取一个表格(table)
table = tables.get_item(i)
# 初始化一个字符串来存储表格数据
tabledata = ''
# 遍历表格的行(rows)
for j in range(0, table.rows.count):
# 遍历行的单元格(cells)
for k in range(0, table.rows.get_item(j).cells.count):
# 获取一个单元格(cell)
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/word表格_{s 1}_{i 1}.txt', 'w', encoding='utf-8') as f:
f.write(tabledata)
doc.close()
用 python 提取 word 文档表格并写入 excel 文件
使用 spire.doc for python 获取到表格数据后,开发人员还可以使用 spire.xls for python 将表格数据写入 excel 工作表,从而实现 word 文档表格到 excel 工作簿的转换。
通过 pypi 安装 spire.xls for python:
pip install spire.xls
从 word 文档中提取表格并写入 excel 工作簿的操作步骤如下:
- 创建 document 类的实例,并使用 document.loadfromfile() 方法加载 word 文档。
- 创建一个 workbook 类的实例,并使用 workbook.worksheets.clear() 方法清除默认工作表。
- 遍历文档中的节,并通过 section.tables 属性获取每个节的所有表格。
- 遍历获取到的表格,并使用 workbook.worksheets.add() 方法为每个表格创建一个工作表。
- 遍历每个表格中的行,以及每行中的单元格。通过 tablecell.paragraphs[].text 属性获取每个单元格的文本,并使用 worksheet.setcellvalue() 方法将获取的文本写入工作表。
- 使用 workbook.savetofile() 方法保存工作簿。
- python
from spire.doc import *
from spire.doc.common import *
from spire.xls import *
from spire.xls.common import *
# 创建一个 document 实例
doc = document()
# 加载一个 word 文档
doc.loadfromfile('示例.docx')
# 创建一个 workbook 实例
wb = workbook()
wb.worksheets.clear()
# 遍历文档中的节(section)
for i in range(doc.sections.count):
# 获取一个节(section)
section = doc.sections.get_item(i)
# 遍历节(section)中的表格(tables)
for j in range(section.tables.count):
# 获取一个表格(table)
table = section.tables.get_item(j)
# 创建一个工作表(worksheet)
ws = wb.worksheets.add(f'table_{i 1}_{j 1}')
# 将表格写入工作表
for row in range(table.rows.count):
# 获取一行(row)
tablerow = table.rows.get_item(row)
# 遍历行(row)中的单元格(cells)
for cell in range(tablerow.cells.count):
# 获取一个单元格(cell)
tablecell = tablerow.cells.get_item(cell)
# 获取单元格中的文本
celltext = ''
for paragraph in range(tablecell.paragraphs.count):
paragraph = tablecell.paragraphs.get_item(paragraph)
celltext = celltext (paragraph.text ' ')
# 将单元格文本写入工作表
ws.setcellvalue(row 1, cell 1, celltext)
# 保存工作簿
wb.savetofile('output/tables/word表格转excel.xlsx', fileformat.version2016)
doc.close()
wb.dispose()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。