使用docxtpl库实现docx报告自动化输出

本文介绍如何利用Python的docxtpl库结合jinja2,从Excel数据中读取信息,自动填充到Word模板中,批量生成报告。讨论了在实现过程中遇到的手机号整形、Pandas版本升级导致的问题及解决方案,以及docxtpl的模版替换方法。
摘要由CSDN通过智能技术生成

概述

大概是一些信息需要从excel表格中读取,然后填写到word固定位置后批量出局报告,操作繁琐,重复劳动,使用docxtpl库实现。

应用环境如下:

  • Windows 10
  • Python 3.6
  • docxtpl-0.6.3

安装支持

conda install docxtpl
#或
pip install docxtpl
#再不行
conda install -c conda-forge docxtpl
#docxtpl安装,会自动安装依赖库docx和jinja2

docxtpl:官方文档   github
jinja2:官方文档  中文文档

实现思路

1.jinja2使用{ {…}}声明模版中的变量,我们将docx模版中需要替换的内容使用{ {…}}手动标注起来。
2.从xls中读取需要替换的值,并与docx模版中预设的变量名对应起来。
3.使用docxtpl库中的DocxTemplate.render完成模板替换。
4.输出替换后的docx。

准备模版

将需要替换的位置使用双大括号进行标准,并添加变量名。
这里需要注意的是这里应该对{ {var}}本身的文本格式完成调整,这样后面替换时就不需要再单独对文本格式进行处理了。
需要单独调整的可以通过docxtpl库使用富文本的方式操作。
docx模版

读取委托信息

中间发生过一个问题,因为手机号信息输出时需要整形,使用pd.astype(‘int64’)时,发现对存在“NAN”的数据无法处理,网上查到说pandas 0.24以上的版本已经可以支持了,就去升级了pandas到1.0.1,结果spyder打不开了。
spyder打不开了
又查到好像说是升级pandas时,依赖库把mkl升级到了2018.0.3,而这个版本有问题,(参考链接),建议重新装回mkl 2018.0.2。

conda install mkl=2018.0.2

装完后,出现第二个问题。
在这里插入图片描述
问题解决:
因为提示少了”IPython.core.inputtransformer2“模块,所以找到对应的文件夹
”D:\anaconda3\Lib\site-packages\IPython\core“
发现在这下面的文件与可以正常运行的ipython文件夹对比少了”inputtransformer2.py“和”async_helpers.py“两个文件,从中复制过来,正常打开即可~~~

然后是第三个问题,
在这里插入图片描述

conda install cloudpickle

最后,spyder4.0如果启动出现“crashed during last session”,可能是kite的问题,卸载kite可以解决。

#设置关键文件的路径
path_te
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值