利用docxtpl库将excel里的数据向一个word模板里填充数据,并保存为一个word文档

###程序功能说明:该功能是将excel里的数据向一个word模板里填充数据,并保存为一个word文档。
from docxtpl import DocxTemplate
import openpyxl

def main1():
      ###特别说明在填写路径时,要用到双\\,不能用文件属性里粘贴的单斜杠\路径,否则会报错
    sSourceFile = "C:\\Users\\16606\\Desktop\\cq\\21.xlsx"
    ##打开文件模板
    doc = DocxTemplate("C:\\Users\\16606\\Desktop\\cq\\mb.docx")
       #加载一个工作簿
    wb = openpyxl.load_workbook(sSourceFile)
    cun2=''
    cun2_num=''
    #打开指定表名称的工作表
    sh = wb['陈老七小学']
    #获得表单元里面的内容,row为行,column为列
    # name= sh.cell(row=1, column=1)
    ##获得单元内的值为name.value
    # print("name", name.value)
    for i in range(4,50):
        ###每循环一次,就要重新加载一次模板,否则生成doc的内容是一样的
        doc = DocxTemplate("C:\\Users\\16606\\Desktop\\cq\\mb.docx")
        name= sh.cell(row=i, column=2)
        sex= sh.cell(row=i, column=9)
        idcard= sh.cell(row=i, column=3)
        phone= sh.cell(row=i, column=4)
        cun1= sh.cell(row=i, column=10)
        print(cun1.value)
        for m in cun1.value:
            if m=="村":
                cun2=cun1.value[:cun1.value.index(m)]
                cun2_num=cun1.value[cun1.value.index(m)+1:]
                break

        ###创建字典形式
        context = {'name': name.value,
                   'sex': sex.value,
                   'Idcard2': idcard.value,
                   'phone': phone.value,
                   'cun': cun2,
                   'cun_num': cun2_num
                   }

        ###doc渲染
        doc.render(context)
        ###doc保存
        doc.save("C:\\Users\\16606\\Desktop\\cq\\21\\"+name.value+".docx")


if __name__ == "__main__":
    main1()

感谢众网友的分享:

https://www.sohu.com/a/375597136_797291

https://blog.csdn.net/yycoolsam/article/details/103255271 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值