向Word文档中添加图片
以下代码使用python-docx向Word文档中的指定位置添加图片
# 提取Excel表中的数据
from openpyxl import load_workbook # 用于读取Excel中的信息
wb = load_workbook('数据.xlsx')
ws = wb.active
data = []
for row in range(2, ws.max_row + 1):
number = ws['A' + str(row)].value
problem = ws['B' + str(row)].value
owner = ws['C' + str(row)].value
info_list = [number, problem, owner]
data.append(info_list)
# print(data)
from docx import Document
from docx.shared import Cm
import os
doc = Document("6S稽查问题模板.docx")
# 将图片按修改时间排序(这样才能与图片的描述一致),将路径存入列表,以便后面逐个插入图片时调用
path = "6s_pictures"
list_p = [path + "\\" + i for i in os.listdir(path)] # 获取图片的文件名,并拼接完整路径
list_p.sort(key=lambda path: os.path.getmtime(path)) # 将列表中的文件按其修改时间排序,os.path.getmtime() 函数是获取文件最后修改时间
table = doc.tables[0] # 已确定是第一个表格,其索引是0
# 增加需要的行,以便足够填入数据
for i in range(len(data) - 1):
table.add_row()
# 写入数据及图片
for row in range(1, len(data) + 1):
table.cell(row, 0).text = str(data[row - 1][0]) # 往第1列写入序号
table.cell(row, 1).text = data[row - 1][1] # 往第2列写入问题描述
table.cell(row, 3).text = data[row - 1][2] # 往第4列写入责任部门
# 插入图片并调整图片的高度和宽度,以适合模板中的单元格尺寸
run = table.cell(row, 2).paragraphs[0].add_run() # 新增一个文字块
picture = run.add_picture(list_p[row - 1]) # 插入图片
picture.height = Cm(4.4) # 设置图片高度
picture.width = Cm(6.2) # 设置图片宽度
doc.save("6S稽查问题.docx")