概述
大概是一些信息需要从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库使用富文本的方式操作。
读取委托信息
中间发生过一个问题,因为手机号信息输出时需要整形,使用pd.astype(‘int64’)时,发现对存在“NAN”的数据无法处理,网上查到说pandas 0.24以上的版本已经可以支持了,就去升级了pandas到1.0.1,结果spyder打不开了。
又查到好像说是升级pandas时,依赖库把mkl升级到了2018.0.3,而这个版本有问题,(参考链接),建议重新装回mkl 2018.0.2。
conda install mkl=2018.0.2
然后是第三个问题,
conda install cloudpickle
最后,spyder4.0如果启动出现“crashed during last session”,可能是kite的问题,卸载kite可以解决。
#设置关键文件的路径
path_te