复杂条件下的文档生成
from docxtpl import DocxTemplate
with open('dat.txt', 'r', encoding='utf-8') as f:
dat = [i.strip() for i in f.readlines()]
dat = [dat[i:i+5] for i in range(0, len(dat), 5)]
print(dat)
tpl = DocxTemplate('tpl.docx')
tpl.render({'dat': dat})
tpl.save('out.docx')
dat.txt 的内容
1. 新中国立于( )年
A. 1919
B. 1921
C. 1927
D. 1949
2. 本题最适当的答案是( )
A. 123456789
B. ABCDE
C. 1234567890
D. 一二三
tpl.docs 的内容
{% for i in dat -%}
{{ i[0] }}
{%- if i[1:]|map(‘length’)|max < 12 %}
{{ i[1] }} {{ i[2] }} {{ i[3] }} {{ i[4] }}
{% elif i[1:]|map(‘length’)|max < 24 %}
{{ i[1] }} {{ i[2] }}
{{ i[3] }} {{ i[4] }}
{% else %}
{{ i[1] }}
{{ i[2] }}
{{ i[3] }}
{{ i[4] }}
{% endif %}
{% endfor %}
在tpl.docx模板里,对dat做for循环,无论有几组题目,都在循环中逐个处理。然后是if判断,计算最长选项的长度,如果小于12,就排成一行;如果超过12小于24,就排成两行;剩下的排成四行
参考文档:
保姆级别docxtpl教程,你值得拥有
官方文档