python-docx-template包之----疑难杂症(三)

系列文

python-docx-template包之----为文字自定义格式(一)

python-docx-template包之----设置表格(二)

python-docx-template包之----疑难杂症(三)

代码操作Word时,自动更新目录(一)

python操作Word时,自动更新目录(二)

概述

除了对表格以及文字的处理外,在使用docxtpl包时总会遇到各种各样的问题,下面总结一下我遇到的问题以及解决方案。

需求

1. 消除jinja2 标签占据的空白(包括换行等)

2.  jinja2 if 条件

实现一:消除jinja2标签占据的空白

经常会发现,在制作模板时,有时候标签会占据一行,这样生成的Word也会相应的多出一行,例如

1. 模板

Title
{% for i in data %}
      {{ i[1] }}.   {{ i[0] }}
{% endfor %}

 结果:

Title

      1.   A

      2.   B

      3.   C

 每一行数据下会多出一行

2. 解决办法

尝试过jinja2的方法,即在%之前或之后添加“-”, 此方式失败

{% for i in data -%}
      {{ i[1] }}.   {{ i[0] }}
{%- endfor %}

 真正的解决办法:

try {%p 替代 {%, 完美解决

Title
{%p for i in data %}
      {{ i[1] }}.   {{ i[0] }}
{%p endfor %}

实现二:jinja2  if条件

在模板中,使用if条件判断,例如 {%if status =='1' %}时,生成Word的时候总会报错 

后来发现,当在Word模板中输入引号时,Word会自动输入倾斜的引号,这个会导致错误,将引号替换

猜你喜欢

转载自blog.csdn.net/weixin_42670653/article/details/83012100