Python将Excel数据自动填充到Word指定位置中

目录

  • Python将Excel数据自动填写到Word
  • 需求
  • 实现

Python将Excel数据自动填写到Word

需求

  1. 需求:批量制作档案表,要从excel表格中将每个人的数据导入到docx档案中,重复量很大,因此可以使用python高效解决。
  2. 渲染:为了让模板内容不变动,这里使用了类似jinja2的渲染引擎,使用{ { }}插值表达式把数据插入进去。也可以使用{% %}循环,条件语法等。
  3. 模板

合同docx模板(在需要插值的位置填充 { {}} 表达式)
Python将Excel数据自动填充到Word指定位置中_第1张图片
人员数据xlsx模板
Python将Excel数据自动填充到Word指定位置中_第2张图片

实现

代码如下

from docxtpl import DocxTemplate
from openpyxl import load_workbook
import os
def replace(obj):
    if obj is None:
       obj = ''
       return obj
 # 加载要填入的数据
wb = load_workbook(r"C:\Users\MSI2\data(1).xlsx")
ws = wb['Sheet1']
contexts = []
for row in range(2, ws.max_row + 1):
    name = ws["A" + str(row)].value
    c_name = ws["B" + str(row)].value
    code = ws["C" + str(row)].value
    num = ws["D" + str(row)].value
    time = ws["E" + str(row)].value
    time = str(time)[:-9]
    money = ws["F" + str(row)].value
    address = ws["G" + str(row)].value
    replace_peo = ws["H" + str(row)].value
    
    context = {
     "name": name, "c_name": c_name, "code": code, "num": num, "time": time,
               "money": money, "address": address, "replace_peo": replace_peo}
    contexts.append(context)
contexts
# 创建要保存的文件夹
os.mkdir("./所有合同")
for context in contexts:
    print(context)
    tpl = DocxTemplate(r"C:\Users\MSI2\A公司(1).docx")
    tpl.render(context)
    tpl.save("./所有合同/{}的劳动合同.docx".format(context["name"]))




效果

Python将Excel数据自动填充到Word指定位置中_第3张图片
Python将Excel数据自动填充到Word指定位置中_第4张图片

你可能感兴趣的:(利用python进行工作,python)