python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python Word表格转Excel

Python实现Word表格自动化转为Excel

作者:用户835629078051

在日常工作中,我们经常需要处理各种格式的数据,本文将深入探讨如何利用Python准确地将Word文档中的表格数据提取并转换为可编辑的Excel表格,感兴趣的小伙伴可以了解下

在日常工作中,我们经常需要处理各种格式的数据。Word文档以其灵活的排版能力,常用于报告和文档撰写,但当这些文档中包含大量表格数据时,将其用于进一步的数据分析或统计时,手动复制粘贴到Excel无疑是一项耗时且易出错的任务。想象一下,面对几十甚至上百个Word文档中的表格,这种重复性工作效率低下且令人沮丧。

幸运的是,Python作为一种强大的自动化工具,能够完美解决这一痛点。本文将深入探讨如何利用Python,结合 Spire.Doc for PythonSpire.XLS for Python 这两个库,高效、准确地将Word文档中的表格数据提取并转换为可编辑的Excel表格。通过自动化这一过程,您将能够显著提升工作效率,减少人为错误,并专注于更有价值的数据洞察。

环境准备与库安装

在开始之前,我们需要确保Python环境已正确配置,并安装所需的库。本文假设您已经安装了Python 3.x 版本。

首先,打开您的命令行工具(如CMD、PowerShell或Terminal),然后使用pip命令安装Spire.Doc for Python和Spire.XLS for Python。这两个库是本次任务的核心,Spire.Doc for Python负责读取和解析Word文档内容,特别是识别和提取表格数据;而Spire.XLS for Python则用于创建、写入和保存Excel文件。

pip install Spire.Doc
pip install Spire.XLS

安装完成后,您就可以在Python脚本中导入和使用它们了。

Word表格读取与数据提取

数据提取是整个转换过程的关键一步。我们将使用Spire.Doc for Python来加载Word文档,并遍历文档中的所有表格,逐一提取其内容。

以下是一个示例Word文档:

我们将编写代码来识别并提取这些数据。

from spire.doc import *
from spire.doc.common import *


def extract_tables_from_word(word_file_path):
    """
    从Word文档中提取所有表格数据。
    返回一个列表,其中每个元素代表一个表格,表格内部是行的列表,行内部是单元格内容的列表。
    """
    document = Document()
    document.LoadFromFile(word_file_path)

    all_tables_data = []
    # 遍历文档中的所有节
    for sec_index in range(document.Sections.Count):
        section = document.Sections.get_Item(sec_index)
        # 遍历节中的所有表格
        for table_index in range(section.Tables.Count):
            table = section.Tables.get_Item(table_index)
            current_table_data = []
            # 遍历表格中的所有行
            for row_index in range(table.Rows.Count):
                table_row = table.Rows.get_Item(row_index)
                current_row_data = []
                # 遍历行中的所有单元格
                for cell_index in range(table_row.Cells.Count):
                    table_cell = table_row.Cells.get_Item(cell_index)
                    # 提取单元格文本,并保持单元格内原有段落结构
                    paras = [table_cell.Paragraphs.get_Item(i).Text.rstrip('\r\n')
                             for i in range(table_cell.Paragraphs.Count)
                             if table_cell.Paragraphs.get_Item(i).Text.strip()]
                    current_cell_data = "\n".join(paras)
                    current_row_data.append(current_cell_data)
                current_table_data.append(current_row_data)
            all_tables_data.append(current_table_data)

    document.Close()
    return all_tables_data


# 假设您的Word文档名为 'input.docx' 并且在当前目录下
word_file = "input.docx"
extracted_data = extract_tables_from_word(word_file)

# 打印提取的数据以供验证
for i, table_data in enumerate(extracted_data):
    print(f"--- Table {i + 1} Data ---")
    for row in table_data:
        print(row)

控制台输出结果:

代码解析:

数据写入Excel与文件保存

提取到数据后,下一步就是将其写入Excel文件。我们将使用Spire.XLS for Python来创建新的Excel工作簿,并将提取的数据逐一写入工作表。

from spire.xls import *
from spire.xls.common import *


def write_data_to_excel(extracted_data, excel_file_path):
    """
    将提取的表格数据写入Excel文件。
    每个Word表格将写入Excel的一个新工作表。
    """
    workbook = Workbook()
    # 清楚默认工作表
    workbook.Worksheets.Clear()

    # 如果没有提取到数据,则不创建Excel文件
    if not extracted_data:
        print("没有从Word文档中提取到任何表格数据。")
        return

    # 遍历所有提取的表格数据
    for i, table_data in enumerate(extracted_data):
        # 为每个表格创建一个新的工作表
        sheet = workbook.Worksheets.Add(f"Table_{i + 1}")

        # 将表格数据写入工作表
        for r_idx, row_data in enumerate(table_data):
            for c_idx, cell_value in enumerate(row_data):
                # Excel的行和列索引从1开始
                sheet.Range[r_idx + 1, c_idx + 1].Value = cell_value

        # (可选)应用基本表格格式
        # 如自动对齐列宽
        sheet.AllocatedRange.AutoFitColumns()

    # 保存Excel文件
    workbook.SaveToFile(excel_file_path, ExcelVersion.Version2016)
    workbook.Dispose()
    print(f"数据已成功写入到 {excel_file_path}")

# 调用函数将数据写入Excel
excel_file = "output.xlsx"
write_data_to_excel(extracted_data, excel_file)

写入效果:

代码解析:

将上述两个部分的Python代码片段整合在一起,您就拥有了一个完整的Word表格到Excel转换的自动化脚本。

总结与展望

通过本文的详细教程,我们学习了如何利用Python结合 Spire.Doc for Python 和 Spire.XLS for Python 库,实现Word文档中表格数据到Excel表格的高效自动化转换。这一过程不仅省去了繁琐的手动复制粘贴,显著提升了数据处理效率,还最大程度地减少了人为错误的可能性。

这种自动化能力在多个领域都具有广泛的应用前景,例如:

到此这篇关于Python实现Word表格自动化转为Excel的文章就介绍到这了,更多相关Python Word表格转Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文