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

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

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

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

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

  1. 创建 DocumentWorkbook 对象。
  2. 使用 Document 类的 LoadFromFile() 方法载入指定路径下的 Word 文档。
  3. 清除 Workbook 中的所有工作表。
  4. 遍历加载的 Word 文档中的所有节(Sections)。
  5. 在每个节中,遍历其包含的所有表格(Tables)。
  6. 对于每一个表格,创建一个新的 Excel 工作表,并根据表格索引为其命名。
  7. 遍历表格中的每一行(Rows),并获取当前行对象。
  8. 再次遍历该行中的所有单元格(Cells),获取单元格对象。
  9. 对于每个单元格,将其包含的段落内容合并为一个字符串(cellText)。
  10. 使用 Workbook 的工作表对象的 SetCellValue() 方法将合并后的单元格文本内容写入到对应的工作表中。
  11. 完成所有表格数据的写入后,使用 WorkbookSaveToFile() 方法将 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()

提取结果

Python提取Word表格保存为Excel工作表

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

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

  1. 创建 Document 对象。
  2. 使用 Document 类的 LoadFromFile() 方法载入指定路径下的 Word 文档。
  3. 遍历载入的 Word 文档中的所有节(Sections)。
  4. 在每个节内,进一步遍历其包含的所有表格(Tables)。
  5. 对于每个表格,生成对应的 CSV 文件名,并以写模式打开这个文件,设置编码为 UTF-8 并开启新行模式。
  6. 创建 csv.writer 对象用于写入 CSV 文件内容。
  7. 根据表格的列数动态生成 CSV 文件的标题行(列名),并用 writerow() 方法写入到CSV文件中。
  8. 遍历当前表格的每一行(Rows),获取当前行对象。
  9. 对于每一行中的每个单元格,只提取第一个段落的文本内容,形成一行的数据列表。
  10. 使用 csv.writer 对象的 writerow() 方法将这一行的数据列表写入到对应的 CSV 文件中。
  11. 在完成一个表格的所有数据写入后,关闭已打开的 CSV 文件。
  12. 继续处理下一个表格,直至遍历完所有表格。
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表格保存为CSV文件

以上内容讲述了如何通过Python提取Word文档中的表格,并转换为Excel工作表或CSV文件。
Spire.Doc for Python还支持许多其他功能,请前往Spire.Doc for Python教程查看。

申请免费许可

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 是一种强大的编程语言,它具有处理文本、数据和自然语言的功能。Python 可以轻松地读取提取各种数据,包括 Word 文档中的表格。 在 Python批量提取 Word 表格,需要使用第三方库 python-docx。该库是专门用于读取和写入 Microsoft Word 文档的 Python 库。使用该库可以轻松地批量处理 Word 文档中的表格提取表格数据、插入数据或修改数据。 具体步骤如下: 1. 安装 python-docx 库。可以通过 pip install python-docx 命令来安装。 2. 使用 docx.Document() 创建一个 Word 文档对象。 3. 遍历文档中的表格,使用 table.rows 和 table.columns 获取表格的行列数。 4. 遍历表格中的每一行,使用 row.cells 获取每一行的单元格。 5. 获取每一行单元格的数据,使用 cell.text 获取单元格的文本内容。 完整代码示例如下: ``` import docx # 创建一个 Word 文档对象 document = docx.Document('example.docx') # 遍历文档中的表格 for table in document.tables: # 获取表格的行列数 nrows = len(table.rows) ncols = len(table.columns) # 遍历每一行 for i in range(nrows): # 获取每一行的单元格 row_cells = table.rows[i].cells # 遍历每一行的单元格 for j in range(ncols): # 获取单元格数据 cell_data = row_cells[j].text print(cell_data) ``` 以上是使用 Python 批量提取 Word 表格的方法,该方法可以方便快捷地处理多个文档中的表格数据,提高数据处理效率。 ### 回答2: Python是一个非常强大的编程语言,能够处理各种数据类型和文件格式。针对word表格批量提取,也可以使用Python轻松实现。以下是实现的方法: 1. 安装python-docx库 python-docx是Python的一个库,可以用于处理Word文档。首先需要在电脑上安装Pythonpython-docx库。 在命令行中输入以下命令安装python-docx库: ``` pip install python-docx ``` 2. 打开word文档 使用Python打开word文档的代码如下所示: ```python import docx doc = docx.Document('file.docx') # ‘file.docx’是需要提取表格Word文档 ``` 3. 获取文档中的表格 使用以下代码可以获取文档中的所有表格: ```python tables = doc.tables ``` 4. 批量读取表格数据 使用以下代码可以读取表格中的数据: ```python for table in tables: for row in table.rows: for cell in row.cells: print(cell.text) ``` 以上代码将输出所有表格的行和列对应的文字内容。需要注意的是,表格中可能包含合并的单元格,需要额外处理,可以使用python-docx库中的Table类方法来处理。 5. 批量写入数据 批量写入数据时,可以先将表格转换为一个嵌套列表,然后将表格数据写入CSV文件中。以下是转换表格并写入CSV文件的代码: ```python import csv import docx doc = docx.Document('file.docx') # ‘file.docx’是需要提取表格Word文档 tables = doc.tables for table in tables: data = [] keys = None for i, row in enumerate(table.rows): text = (cell.text for cell in row.cells) if i == 0: keys = tuple(text) continue row_data = dict(zip(keys, text)) data.append(row_data) with open(f"{table.name}.csv", "w", newline="") as f: writer = csv.DictWriter(f, keys) writer.writeheader() writer.writerows(data) ``` 以上代码将根据每个表格的名称自动将表格数据写入对应的CSV文件中。 Python提取word表格的过程就是这样,简单易懂,实现起来也相对简单。而且Python操作word文档不需要Microsoft Office软件本身,只需要安装相应的库即可,操作更加便捷。 ### 回答3: 要批量提取 Word 表格,可以使用 Python 中的 python-docx 库。该库是一个用于创建、修改和提取 Microsoft Word 文档的Python解析程序库,并且非常适合处理 Word 文档中的表格。 具体步骤如下: 1. 安装 python-docx 库:可以通过 pip 命令进行安装,命令为 pip install python-docx。 2. 导入 python-docx 库:在 Python 代码中导入 python-docx 库,以便使用库中的函数和类。 3. 打开 Word 文档:使用库中的 Document 类打开 Word 文档,方法为 doc = Document('filename.docx'),其中 filename.docx 是要打开的 Word 文件名。 4. 遍历 Word 文档中的表格:使用 doc.tables 属性可以获取文档中的所有表格,该属性返回一个表格列表,其中每个表格都是一个 Table 对象。 5. 处理每一个表格:对于每个 Table 对象,使用 for 循环遍历每一行(row)和每一列(cell)以处理表格中的数据。例如,要获取表格中第2行第3列单元格的文本内容,并将其存储在变量 text 中,可以使用 text = table.cell(2, 3).text。 6. 将数据保存到文件中:使用 Python 中的标准文件处理方法将数据保存到文件中。 以下是一个示例代码,用于从一个 Word 文档中提取所有表格的内容并将其保存到 CSV 文件中: ```python import csv from docx import Document document = Document('example.docx') tables = document.tables for table in tables: with open('table.csv', 'a', newline='') as csvfile: writer = csv.writer(csvfile, delimiter=',') for row in table.rows: row_data = [] for cell in row.cells: row_data.append(cell.text) writer.writerow(row_data) writer.writerow([]) ``` 在此示例中,我们使用 csv 库将提取到的表格内容保存到一个名为 table.csv 的 CSV 文件中。我们使用 for 循环遍历每个表格,然后使用嵌套的 for 循环遍历每个行和单元格,提取单元格中的文本内容,并将每一行的数据写入 CSV 文件中。最后,我们在 CSV 文件中插入一个空行以区分不同的表格。 总之,使用 python-docx 库可以方便地批量提取 Word 表格数据提取数据可以方便地保存到 CSV、JSON 或其他常见的数据格式中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值