用python帮你生产指定内容的word文档

Python网络爬虫与文本数据分析(学术)

很多岗位经常发送模板化的内容,比如给员工发送工资条信息,实际上改动的地方只有有限的几个字段,诸如姓名、岗位、底薪、补助等,而其他部分内容基本不改动。

如果能用python自动化填充需要调整的字段,那么工作量将会大大降低。docxtpl可以让我们实现docx文件的自动化批量生成。

安装docxtpl

!pip3 install docxtpl
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: docxtpl in /usr/local/lib/python3.7/site-packages (0.6.3)
Requirement already satisfied: lxml in /usr/local/lib/python3.7/site-packages (from docxtpl) (4.4.1)
Requirement already satisfied: six in /usr/local/lib/python3.7/site-packages (from docxtpl) (1.12.0)
Requirement already satisfied: python-docx<=0.8.7 in /usr/local/lib/python3.7/site-packages (from docxtpl) (0.8.7)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.7/site-packages (from docxtpl) (2.10.3)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/site-packages (from jinja2->docxtpl) (1.1.1)

文本

最简单的模板,只填充文本内容。

假设这是工资条模板,我们需要在docx内做标记告诉python哪些地方需要填充内容。这里使用到jinja2标记方式, 如下图{{variablename}}是需要填充的变量名

我在template文件夹内建立来一个"工资条.docx"模板,其中的jinja模板内容如下

docx文件中的varibalename会在python代码的字典中当作关键词承接相应的值,比如下面的代码会生成张三.docx

from docxtpl import DocxTemplate
doc = DocxTemplate("template/工资条.docx")
context = {'name' : "张三",
           'occupation': '销售',
           'base': 3000,
           'food':1000,
           'transport': 2000,
           'bonus': 5000,
           'salary': 11000}
doc.render(context)
doc.save("output/张三.docx")

运行结果

图片

更复杂一点,在模板中插入图片。插入图片稍微麻烦一点,需要InlineImage对象,具体参考例子

from docxtpl import DocxTemplate, InlineImage
from docx.shared import Mm #毫米
doc = DocxTemplate("template/感谢信.docx")
#定义插入的图片
picture = InlineImage(doc,
                      'img/感谢有你.jpg',
                      width=Mm(50),
                      height=Mm(30))
#插入docx的内容
context = {'name' : "张三",
          'thankpicture': picture}
#插入dd
doc.render(context)
doc.save("output/感谢张三.docx")

运行结果

超链接

from docxtpl import DocxTemplate, RichText
from docx.shared import Mm #毫米
doc = DocxTemplate("template/百度.docx")
#定义超链接
rt = RichText('百度一下你就知道',
              #超链接的url
              url_id=doc.build_url_id('https://www.baidu.com/'))
#插入docx的内容
context = {'baiduclick' : rt}
#插入dd
doc.render(context)
doc.save("output/百度click.docx")

运行结果

近期文章

精选课程 | Python数据分析实战(学术)

pandas 1.0最新版本特性抢先看

Modin:一行代码让pandas加速数十倍

2020年B站跨年晚会弹幕内容分析

综述:文本分析在市场营销研究中的应用

Lazy Prices公司年报内容变动碰上股价偷懒

使用pandas做数据可视化

用statsmodels库做计量分析

YelpDaset: 酒店管理类数据集10+G

NRC词语情绪词典和词语色彩词典

Loughran&McDonald金融文本情感分析库

股评师分析报告文本情感分析预测股价

使用分析师报告中含有的情感信息预测上市公司股价变动

【公开视频课】Python语法快速入门

【公开视频课】Python爬虫快速入门

一行pandas代码生成哑变量

使用Python读取图片中的文本数据

代码不到40行的超燃动态排序图

jupyter notebook代码获取方式,公众号后台回复关键词“20200116” 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值