Python办公自动化Word转Excel文件批量处理

  • Post category:Python

下面是Python办公自动化Word转Excel文件批量处理的完整实例教程。

1. 安装必要的库

首先,需要安装Python-docx和openpyxl库,可以通过以下命令安装:

pip install python-docx
pip install openpyxl

2. 准备Word文档和Excel表格

假设我们有多个Word文档(.docx)需要转换为Excel表格,并将它们合并到一个Excel文件中,那么我们可以在指定的文件夹里准备所有的Word文档和一个Excel表格,例如:

Folder/
    |- doc1.docx
    |- doc2.docx
    |- doc3.docx
    |- template.xlsx

其中template.xlsx是一个空的Excel模板文件,我们将通过代码将每个Word文档的数据复制到Excel表格中。

3. 编写代码

接下来,我们需要编写Python代码读取所有的Word文档,并将它们转换为Excel表格。以下是示例代码:

import os
from docx import Document
from openpyxl import load_workbook

# 文件夹路径和模板文件路径
folder_path = 'Folder/'
template_file = 'template.xlsx'

# 打开模板文件,并选择第一个表格
wb = load_workbook(template_file)
ws = wb.active

# 获取文件夹中的所有Word文件
word_files = [f for f in os.listdir(folder_path) if f.endswith('.docx')]

# 遍历所有的Word文件
for i, file in enumerate(word_files):
    # 打开Word文件并解析内容
    doc = Document(folder_path + file)
    content = doc.tables[0].rows

    # 将内容复制到对应的Excel行
    for row in content:
        ws.append([i+1] + [cell.text for cell in row.cells])

# 保存Excel文件
wb.save('output.xlsx')

代码中的逻辑如下:

  1. 首先,定义文件夹路径和模板文件路径。
  2. 然后,打开模板文件,并选择第一个表格(默认情况下,Excel文件只有一个表格)。
  3. 接着,获取文件夹中的所有Word文件。
  4. 遍历每个Word文件,打开并解析内容。
  5. 将内容复制到对应的Excel行。
  6. 最后,保存Excel文件。

值得注意的是,代码中使用了enumerate函数生成了一个计数器i,当我们遍历每个Word文件时,将计数器作为表格第一列的值。

4. 示例说明

以下是两个示例说明:

示例一

假设有三个Word文档:A.docx、B.docx和C.docx。这些文档都有一个表格,每个表格有两列(名称和数值),但是文档的行数并不相同。通过运行上述代码,我们将转换所有文档为Excel表格,并将它们合并到一个Excel文件中。

示例二

假设有一个Word文档:example.docx。该文档有三个表格,每个表格的名称分别是:Table1、Table2和Table3。我们要将其中每个表格的内容都存储到一个单独的Excel表格中,并将它们保存到一个Excel文件中。此时,我们可以通过修改示例代码实现这个功能。例如:

import os
from docx import Document
from openpyxl import Workbook

# 文件夹路径和模板文件路径
folder_path = 'Folder/'
template_file = 'template.xlsx'

# 获取所有的表格名称
doc = Document(folder_path + 'example.docx')
table_names = [table._element.attrib['{http://schemas.openxmlformats.org/wordprocessingml/2006/main}name'] 
                for table in doc.tables]

# 遍历所有的表格
for table_name in table_names:
    # 打开模板文件,并选择第一个表格
    wb = Workbook()
    ws = wb.active

    # 打开Word文件并解析内容
    table = doc.tables[table_names.index(table_name)]
    content = table.rows

    # 将内容复制到对应的Excel行
    for row in content:
        ws.append([cell.text for cell in row.cells])

    # 保存Excel文件
    wb.save(table_name+'.xlsx')

代码中的逻辑如下:

  1. 首先,定义文件夹路径和模板文件路径。
  2. 然后,获取Word文档中的所有表格名称。
  3. 接着,遍历所有的表格。
  4. 对于每个表格,打开模板文件,并选择第一个表格(默认情况下,Excel文件只有一个表格)。
  5. 打开文档并解析对应的表格内容。
  6. 将内容复制到对应的Excel表格中。
  7. 最后,保存Excel文件。

该示例还添加了代码读取单个Word文档的功能,并通过表格名称将数据保存到单独的Excel表格中。