办公-读取exl批量制作word模板

办公-读取exl批量制作word模板(存在一定问题但已解决)

参考代码 Python自动化办公之Word,全网最全看这一篇就够了
python套用word模板_如何使用MailMerge用python填写word模板?

代码

from openpyxl import Workbook, load_workbook
from mailmerge import MailMerge


# 加载excel文件
wb = load_workbook("123.xlsx",data_only=True)
# 获取所在的工作表
sheet = wb.active


flag=0
countRow=0
lastRow=(0,0)
for row in sheet.iter_rows(min_row=2, max_row=38,min_col=1, max_col=8):
	save = 0
	for i in row:

		if i.value==None:
			flag=1
			continue
		if (flag==1 and save==0):
			name=lastRow[4].value
			num=lastRow[3].value
			classs=lastRow[0].value
			mayor=str(classs)[:-3]
			xuefen=row[7].value
			if int(xuefen)>=12:
				print(name,num,mayor,classs,xuefen)
				template = '模板.docx'
				document = MailMerge(template)
				document.merge(name=name,
								num=str(num),
								mayor=mayor,
								classs=classs,
								xuefen=str(xuefen))
				document.write('新建文件夹\{:}的学业.docx'.format(name))
				save=1

		print(i.value,end=', ')
		flag = 0
	print()
	lastRow = row
	countRow+=1
print(countRow)

限制(已解决)

1.document.merge(name=name,
num=str(num),
mayor=mayor,
classs=classs,
xuefen=str(xuefen))函数使用时虽然name,sum,mayor,classs,xuefen数据已更新,但产生新模板时依然只沿用老数据,使得新产生的模板虽然名字不同,里面的内容都是一样的(数据与第一次运行该函数的数据相同)
(1)解决方案:将template = '模板.docx';document = MailMerge(template)两行代码移到循环里即可

posted @ 2022-03-20 22:30  梧桐灯下江楚滢  阅读(215)  评论(0编辑  收藏  举报