docxtpl实战项目分享¶
一、简介 WHAT¶
docxtpl 官方文档:https://docxtpl.readthedocs.io/en/latest/
python-docx 官方文档:https://docxtpl.readthedocs.io/en/latest/#
jinja2 官方文档:https://jinja.palletsprojects.com/en/3.1.x/
docxtpl = python-docx + jinja2
二、缘由 WHY¶
- python-docx 在创建文档方面非常强大,但在修改文档方面却稍显鸡肋。
- 插值语法特性,对于处理固定模板非常高效。
二、使用 HOW¶
1. 安装¶
- pip
pip install docxtpl
- conda
conda install docxtpl --channel conda-forge
2. 模板语法¶
- 值
我正在学习{{ language }}。
- 条件语句
{% if score > 80 %}
太秀了!
{% else %}
继续加油!
{% endif %}
- 循环语句
{%tr for row in table %}
{{ row.name }}
{%tr endfor %}
- 渲染数据
from docxtpl import DocxTemplate
# 1. 初始化模板
template = DocxTemplate('./模板文件.docx')
# 2. 填充数据
context = {'hello': 'world'}
# 3. 渲染数据
template.render(context=context)
# 4. 保存文件
template.save('new.docx')
3. 示例¶
word模板内容:
python示例代码:
from docxtpl import DocxTemplate
def show_basic_usage():
# 指定模板文件(土坑)
tpl = DocxTemplate('word模板.docx')
# 动态数据(萝卜)
context = {
'name': '小鸟鸣',
'language': 'Python',
'city': '深圳',
'freelance': [
{'month': '二月','spider': 8888,'statistic': 8888,'live': 8888},
{'month': '三月','spider': 9999,'statistic': 9999,'live': 9999}
]
}
# 渲染数据(插值)
tpl.render(context=context)
# 保存文件
tpl.save("输出结果.docx")
if __name__ == '__main__':
show_basic_usage()
项目分享¶
致谢:雪狐