赞
踩
在大数据处理与信息抽取领域中,Word文档是各类机构和个人普遍采用的一种信息存储格式,其中包含了大量的结构化和半结构化数据,如各类报告、调查问卷结果、项目计划等。这些文档中的表格往往承载了关键的数据信息,如统计数据、项目进度、研究成果等。然而,手动从大量的Word文档中逐一摘取并整理这些表格不仅耗时费力,且易出错,无法满足高效、准确的数据利用需求。因此,利用编程实现批量提取Word文档中的表格成为了一种必要且高效的解决方案。Python作为一种功能强大、易学易用的编程语言,可以有效地实现这一目标,极大地提升数据采集和预处理的工作效率,同时也为后续的数据分析和应用提供强有力的支持。本文将介绍如何使用Python实现对Word文档中表格的提取。
本文所使用的方法需要用到Spire.Doc for Python,pip:pip install Spire.Doc
。如果是将表格保存到Excel工作表,则还需要用到Spire.XLS for Python,pip:pip install Spire.XLS
。
读取Word文档中的表格并写入Excel工作簿需要同时用到这两个库。以下是操作步骤:
代码示例:
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() # 遍历文档中的节 for i in range(doc.Sections.Count): # 获取一个节 section = doc.Sections.get_Item(i) # 遍历节中的表格 for j in range(section.Tables.Count): # 获取一个表格 table = section.Tables.get_Item(j) # 创建一个工作表 ws = wb.Worksheets.Add(f"表 {(j + 1)}") # 将表格数据写入工作表 for row in range(table.Rows.Count): # 获取一行 tableRow = table.Rows.get_Item(row) # 遍历一行中的单元格 for cell in range(tableRow.Cells.Count): # 获取一个单元格 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/Word表格写入Excel.xlsx", FileFormat.Version2016) doc.Close() wb.Dispose()
提取结果
CSV文件以文本的文件的形式储存表格数据,因此,我们可以直接使用Spire.Doc for Python提取Word文档中的表格数据并写入到CSV文件。以下是操作步骤:
import csv from spire.doc import * # 创建Document对象 doc = Document() # 载入Word文档 doc.LoadFromFile("示例.docx") # 遍历文档中的节 for i in range(doc.Sections.Count): # 获取一个节 section = doc.Sections.get_Item(i) # 遍历节中的表格 for j in range(section.Tables.Count): # 获取一个表格 table = section.Tables.get_Item(j) # 创建CSV文件名并打开文件 csv_file_name = f"output/CSV/表_{(j + 1)}.csv" with open(csv_file_name, 'w', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile) # 遍历表格中的每一行 for row in range(table.Rows.Count): # 获取一行 tableRow = table.Rows.get_Item(row) # 读取一行中的单元格内容,只取每个单元格的第一个段落 row_data = [tableRow.Cells.get_Item(cell).Paragraphs[0].Text for cell in range(tableRow.Cells.Count)] # 将单元格内容写入CSV文件 writer.writerow(row_data) doc.Close()
提取结果:
以上内容讲述了如何通过Python提取Word文档中的表格,并转换为Excel工作表或CSV文件。
Spire.Doc for Python还支持许多其他功能,请前往Spire.Doc for Python教程查看。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。