要批量处理多个 Word 文档,并将每个文件的前三行表格数据逐行输出到 Excel 文件中,可以使用以下完整代码。我们将遍历指定目录下的所有 .docx
文件,提取每个文件的前三行表格数据,并将结果逐行写入 Excel 文件。
完整代码
import os
from docx import Document
from openpyxl import Workbook
# 定义输入目录和输出文件路径
input_dir = r"H:\WPSDrive\303815971\WPS云盘\2025VS code" # 替换为你的Word文档目录
output_path = r"H:\WPSDrive\303815971\WPS云盘\2025VS code\test.xlsx" # 替换为你的输出Excel文件路径
# 创建Excel文件和工作表
wb = Workbook()
ws = wb.active
ws.append(["文件名", "字段1", "字段2", "字段3", "字段4", "字段5", "字段6"]) # 表头
# 遍历目录下的所有.docx文件
for filename in os.listdir(input_dir):
if filename.endswith(".docx"):
file_path = os.path.join(input_dir, filename)
print(f"正在处理文件: {filename}")
# 读取Word文档
try:
doc = Document(file_path)
except Exception as e:
print(f"读取文件 {filename} 时出错: {e}")
continue
# 检查文档中是否有表格
if not doc.tables:
print(f"文件 {filename} 中没有表格")
continue
# 获取第一个表格
table = doc.tables[0]
# 提取前三行的所有字段,并避免重复内容
data = []
seen = set() # 用于记录已经处理过的内容
for row in table.rows[:3]: # 只取前三行
for cell in row.cells:
cell_text = cell.text.strip().replace(" ", "") # 去掉空格
if cell_text and cell_text not in seen: # 如果内容不为空且未处理过
seen.add(cell_text)
data.append(cell_text)
# 将文件名和数据写入Excel的一行中
ws.append([filename] + data)
# 保存Excel文件
wb.save(output_path)
print(f"所有文件处理完成,结果已保存到 {output_path}")
代码说明
1. 定义输入目录和输出文件路径
input_dir
:指定包含 Word 文档的目录路径。output_path
:指定输出 Excel 文件的路径。
2. 创建 Excel 文件和工作表
wb = Workbook()
:创建一个新的 Excel 工作簿。ws = wb.active
:获取活动工作表。ws.append(["文件名", "字段1", "字段2", "字段3", "字段4", "字段5", "字段6"])
:添加表头。
3. 遍历目录下的所有 .docx
文件
os.listdir(input_dir)
:列出目录中的所有文件。if filename.endswith(".docx")
:筛选出.docx
文件。file_path = os.path.join(input_dir, filename)
:构建文件的完整路径。
4. 读取 Word 文档
doc = Document(file_path)
:读取 Word 文档。- 如果读取失败,捕获异常并跳过该文件。
5. 检查文档中是否有表格
if not doc.tables
:如果文档中没有表格,跳过该文件。
6. 获取第一个表格
table = doc.tables[0]
:获取第一个表格。
7. 提取前三行的所有字段
data = []
:存储提取的字段。seen = set()
:记录已经处理过的字段,避免重复。- 遍历前三行的每个单元格,去掉空格并添加到
data
中。
8. 将文件名和数据写入 Excel 文件
ws.append([filename] + data)
:将文件名和数据写入 Excel 的一行中。
9. 保存 Excel 文件
wb.save(output_path)
:保存 Excel 文件。
示例
假设目录中有以下两个 Word 文件:
文件 1:冯艳娟.docx
字段1 | 字段2 | 字段3 |
---|---|---|
科 室 | ||
重症医学科 | (ICU)病房 | |
考核时间 | 2024年1月 | -12月 |
文件 2:李四.docx
字段1 | 字段2 | 字段3 |
---|---|---|
姓 名 | ||
李四 | 男 | |
年龄 | 30 | 岁 |
输出 Excel 文件(test2.xlsx)
文件名 | 字段1 | 字段2 | 字段3 | 字段4 | 字段5 | 字段6 |
---|---|---|---|---|---|---|
冯艳娟.docx | 科室 | 重症医学科 | (ICU)病房 | 考核时间 | 2024年1月 | -12月 |
李四.docx | 姓名 | 李四 | 男 | 年龄 | 30 | 岁 |
运行代码
- 将代码保存为
yyy.py
文件。 - 确保 Word 文档存放在
input_dir
指定的目录中。 - 打开命令行,导航到代码所在的目录。
- 运行以下命令:
python yyy.py
- 如果一切正常,程序会输出:
所有文件处理完成,结果已保存到 H:\WPSDrive\303815971\WPS云盘\2025VS code\test2.xlsx
注意事项
-
文件路径:
- 确保
input_dir
和output_path
指向正确的路径。 - 如果路径中包含中文或空格,建议使用原始字符串(
r"路径"
)。
- 确保
-
文件格式:
- 确保文件是
.docx
格式,而不是.doc
或其他格式。
- 确保文件是
-
依赖库安装:
- 如果尚未安装
python-docx
和openpyxl
,可以使用以下命令安装:pip install python-docx openpyxl
- 如果尚未安装
通过以上代码,你可以批量处理多个 Word 文档,并将结果逐行写入 Excel 文件。