本篇教程展示如何利用 Python,实现从 Excel 中提取稽查问题数据,并将对应图片按顺序插入到 Word 模板表格里,最终生成一份图文并茂的稽查报告。
目录
📝 Step 1:从 Excel 提取稽查问题数据
from openpyxl import load_workbook
wb = load_workbook('数据.xlsx')
ws = wb.active
data = []
for row in range(2, ws.max_row + 1):
number = ws[f'A{row}'].value
problem = ws[f'B{row}'].value
owner = ws[f'C{row}'].value
data.append([number, problem, owner])
读取 Excel 中第二行及以下的数据,生成
data
列表;包含三列:序号、问题描述、责任人。
🖼 Step 2:读取并排序图片文件路径
import os
path = "6s_pictures"
list_p = [os.path.join(path, fname) for fname in os.listdir(path)]
list_p.sort(key=os.path.getmtime)
使用
os.path.getmtime()
对图片按修改时间排序,确保与data
行对应;使用
os.path.join()
拼接跨平台路径。
🧩 Step 3:打开 Word 模板并添加表格行
from docx import Document
from docx.shared import Cm
doc = Document("6S稽查问题模板.docx")
table = doc.tables[0]
# 增加剩余行,保证行数与 data 一致
for _ in range(len(data) - 1):
table.add_row()
使用
python-docx
打开模板;.add_row()
新增空行,为数据填充准备空间。
🎯 Step 4:填充稽查内容与插入图片
for i, row in enumerate(range(1, len(data) + 1)):
table.cell(row, 0).text = str(data[i][0])
table.cell(row, 1).text = data[i][1]
table.cell(row, 3).text = data[i][2]
run = table.cell(row, 2).paragraphs[0].add_run()
pic = run.add_picture(list_p[i], width=Cm(6.2), height=Cm(4.4))
逐行填充 Excel 的数据;
在图像列插入图片,并设置尺寸适配表格;
python-docx
支持add_picture(height, width)
设置图像大小 ironsoftware.com+2python-docx.readthedocs.io+2medium.com+2。
💾 Step 5:保存最终文档
doc.save("6S稽查问题.docx")
将填充好数据与图片的模板另存为新文档。
🖼️ 结果展示区
✨ 技术说明
利用
os.path.getmtime()
排序图片,确保与 Excel 中的行一一对应;add_picture()
可设置图像尺寸,帮助图片自适应表格 ;插图可根据
CVM
参数调整大小以适应排版;可扩展功能包括:自动合并空白行、边框样式美化、条件格式设置等。
✅ 小结
本文展示了如何组合 openpyxl
与 python-docx
实现:
从 Excel 📥 提取稽查问题数据;
自动读取并按顺序插入图片 📸;
一键生成美观的 Word 模板报告 ✅。
更多实用案例,代码,素材如下:
自取链接:夸克网盘分享
下一步可继续扩展,比如“自动合并单元格并总结统计”、“设置表格边框和背景样式”等功能。如有兴趣我可以继续帮你完善这套自动化工具!