Python实现批量提取Word文档表格数据

 更新时间:2024年03月12日 07:56:23   作者:Eiceblue  
在大数据处理与信息抽取领域中,Word文档是各类机构和个人普遍采用的一种信息存储格式,本文将介绍如何使用Python实现对Word文档中表格的提取,感兴趣的可以了解下

在大数据处理与信息抽取领域中,Word文档是各类机构和个人普遍采用的一种信息存储格式,其中包含了大量的结构化和半结构化数据,如各类报告、调查问卷结果、项目计划等。这些文档中的表格往往承载了关键的数据信息,如统计数据、项目进度、研究成果等。然而,手动从大量的Word文档中逐一摘取并整理这些表格不仅耗时费力,且易出错,无法满足高效、准确的数据利用需求。因此,利用编程实现批量提取Word文档中的表格成为了一种必要且高效的解决方案。Python作为一种功能强大、易学易用的编程语言,可以有效地实现这一目标,极大地提升数据采集和预处理的工作效率,同时也为后续的数据分析和应用提供强有力的支持。本文将介绍如何使用Python实现对Word文档中表格的提取。

本文所使用的方法需要用到Spire.Doc for Python,可从官网获取。如果是将表格保存到Excel工作表,则还需要用到Spire.XLS for Python

提取Word文档表格并保存为Excel工作表

读取Word文档中的表格并写入Excel工作簿需要同时用到这两个库。以下是操作步骤:

创建 Document 和 Workbook 对象。

使用 Document 类的 LoadFromFile() 方法载入指定路径下的 Word 文档。

清除 Workbook 中的所有工作表。

遍历加载的 Word 文档中的所有节(Sections)。

在每个节中,遍历其包含的所有表格(Tables)。

对于每一个表格,创建一个新的 Excel 工作表,并根据表格索引为其命名。

遍历表格中的每一行(Rows),并获取当前行对象。

再次遍历该行中的所有单元格(Cells),获取单元格对象。

对于每个单元格,将其包含的段落内容合并为一个字符串(cellText)。

使用 Workbook 的工作表对象的 SetCellValue() 方法将合并后的单元格文本内容写入到对应的工作表中。

完成所有表格数据的写入后,使用 Workbook 的 SaveToFile() 方法将 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()

提取结果

提取Word文档表格并保存为CSV文件

CSV文件以文本的文件的形式储存表格数据,因此,我们可以直接使用Spire.Doc for Python提取Word文档中的表格数据并写入到CSV文件。以下是操作步骤:

创建 Document 对象。

使用 Document 类的 LoadFromFile() 方法载入指定路径下的 Word 文档。

遍历载入的 Word 文档中的所有节(Sections)。

在每个节内,进一步遍历其包含的所有表格(Tables)。

对于每个表格,生成对应的 CSV 文件名,并以写模式打开这个文件,设置编码为 UTF-8 并开启新行模式。

创建 csv.writer 对象用于写入 CSV 文件内容。

根据表格的列数动态生成 CSV 文件的标题行(列名),并用 writerow() 方法写入到CSV文件中。

遍历当前表格的每一行(Rows),获取当前行对象。

对于每一行中的每个单元格,只提取第一个段落的文本内容,形成一行的数据列表。

使用 csv.writer 对象的 writerow() 方法将这一行的数据列表写入到对应的 CSV 文件中。

在完成一个表格的所有数据写入后,关闭已打开的 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文档表格数据的文章就介绍到这了,更多相关Python提取Word表格数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python实现PDF文档自动化编辑与图表绘制的全指南

    使用Python实现PDF文档自动化编辑与图表绘制的全指南

    PDF文档处理在日常工作中太常见了,手动处理费时费力还容易出错,用Python来搞定这些重复性工作非常高效,今天我就带大家用Python来实现PDF文档的自动化编辑和数据可视化,包括PDF的读取、修改、合并,以及用数据绘制漂亮的图表,需要的朋友可以参考下
    2025-08-08
  • Pandas 多层索引操作的实现

    Pandas 多层索引操作的实现

    本文主要介绍了Pandas 多层索引操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Python利用flask操作Redis的方法详解

    Python利用flask操作Redis的方法详解

    这篇文章主要为大家详细介绍了Python如何利用flask操作Redis,文中的示例代码讲解详细,对我们学习Python有一定的帮助,需要的可以参考一下
    2023-02-02
  • python实现分析apache和nginx日志文件并输出访客ip列表的方法

    python实现分析apache和nginx日志文件并输出访客ip列表的方法

    这篇文章主要介绍了python实现分析apache和nginx日志文件并输出访客ip列表的方法,涉及Python操作日志文件的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 教你利用Python玩转histogram直方图的五种方法

    教你利用Python玩转histogram直方图的五种方法

    这篇文章主要给大家介绍了关于如何利用Python玩转histogram直方图的五种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • 如何将python脚本打包为exe可执行文件

    如何将python脚本打包为exe可执行文件

    这篇文章主要介绍了如何将python脚本打包为exe可执行文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 解决使用openpyxl时遇到的坑

    解决使用openpyxl时遇到的坑

    这篇文章主要介绍了解决使用openpyxl时遇到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 通过代码实例展示Python中列表生成式的用法

    通过代码实例展示Python中列表生成式的用法

    这篇文章主要介绍了通过代码实例展示Python中列表生成式的用法,包括找出质数、算平方数等基本用法,需要的朋友可以参考下
    2015-03-03
  • Python利用ElementTree实现快速解析XML文件

    Python利用ElementTree实现快速解析XML文件

    ElementTree 是 Python 标准库的一部分,而且是 Python 标准库中用于解析和操作 XML 数据的模块,下面小编就来和大家详细讲讲如何通过ElementTree实现快速解析XML吧
    2025-04-04
  • Python绘制折线图可视化神器pyecharts案例

    Python绘制折线图可视化神器pyecharts案例

    这篇文章主要介绍了Python绘制折线图可视化神器pyecharts,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07

最新评论