下面是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')
代码中的逻辑如下:
- 首先,定义文件夹路径和模板文件路径。
- 然后,打开模板文件,并选择第一个表格(默认情况下,Excel文件只有一个表格)。
- 接着,获取文件夹中的所有Word文件。
- 遍历每个Word文件,打开并解析内容。
- 将内容复制到对应的Excel行。
- 最后,保存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')
代码中的逻辑如下:
- 首先,定义文件夹路径和模板文件路径。
- 然后,获取Word文档中的所有表格名称。
- 接着,遍历所有的表格。
- 对于每个表格,打开模板文件,并选择第一个表格(默认情况下,Excel文件只有一个表格)。
- 打开文档并解析对应的表格内容。
- 将内容复制到对应的Excel表格中。
- 最后,保存Excel文件。
该示例还添加了代码读取单个Word文档的功能,并通过表格名称将数据保存到单独的Excel表格中。