python自动化办公(五)实现将读取的excel数据写到word指定的地方:示例(劳动合同)
一、相关库的下载
pip install docxtpl
pip install openpyxl
二、excel 和 word模板事先准备
excel
word
三、代码实现
from docxtpl import DocxTemplate
from openpyxl import load_workbook
import os
#定义一个空的列表用于存放数据
contexts = []
#获取excel中的数据
def get_excel_data(excel_pathname):
#获取excel句柄
wk = load_workbook(excel_pathname)
#获取excel对应的表单
ws = wk['Sheet1']
#Start row, where data begins
#Getting cell value, from columns A, B and C
#Iterating through rows 2, 3, 4 ...
for row in range(2,ws.max_row + 1):
name1 = ws["A" + str(row)].value
name2 = ws["B" + str(row)].value
year = ws["C" + str(row)].value
memory = ws["D" + str(row)].value
context = {"name1":name1,"name2":name2,"year":year,"memory":memory}
contexts.append(context)
def finish_word_data(word_pathname):
if not os.path.exists("./所有合同"):
#创建要保存的文件夹
os.mkdir("./所有合同")
for context in contexts:
print(context)
tpl = DocxTemplate(word_pathname) #获取原有的word模板数据
tpl.render(context) #利用插值表达式{{ example }} 替换word模板中需要替换的地方
tpl.save("./所有合同/{}的劳动合同.docx".format(context["name2"])) #保存为新的word,修改后的
if __name__ == "__main__":
get_excel_data(r"./相关劳动合同签署人员.xlsx")
finish_word_data(r"./劳动合同模板.docx")
运行结果: