工作中经常会用到word,比如合同或报告等,有时候只需要更改合同或报告中的某些内容,如果涉及到多个主体,工作量就会非常大。但没有什么重复的工作是python不能解决的,把word文件做成模板,把需要填充的内容做成excel文件保存起来(很多时候本来就是excel文件,拿来就用),最后就是docxtpl三步曲了(1.DocxTemplate,2.render,3.save)
from docxtpl import DocxTemplate
import pandas as pd
df=pd.read_excel("./xxxxxx.xlsx")
df=df[["xxx","xxx","xxx","xxx","xxx","xxx","xxx","xxx","xxx"]]
for i in df.itertuples():
tpl=DocxTemplate("./协议/xxxxx.docx") #好像只能打开docx文件,打不开doc文件,还有这个DocxTemplate只能放在循环里面,如果放在外面的话保存的内容就只会是循环第一次的内容。
dates=i[7].split(" ")[0].split("-") #这里应该可以直接在df那个切割分列日期
if i[3]=="xxx":
nshtype="□xxxx\n■xxxx"
else:
nshtype="■xxxx\n□xxxx"
conten={ #如果涉及内容多的话这里应该可以直接用DataFrame的dict函数转化为字典。
"name":i[1],
"shname":i[2],
"shtype":nshtype,
"id":i[4],
"phone":i[5],
"account":i[6],
"yy":dates[0],
"mm":dates[1],
"dd":dates[2],
"add":i[8],
"shid":int(i[9])
}
tpl.render(conten)
tpl.save("./协议/{}.docx".format(i[1]))