我正在使用Python-Docx-Template动态创建可打印在Avery标签上的地址标签。我在MS Word中找到了正确的表模板,并插入了一个FOR循环来遍历这些地址。每行有3个地址,因此我设置了以下代码:
from docxtpl import DocxTemplate
tpl=DocxTemplate('templates/address_labels.docx')
context = {
'tbl_contents' : [
{'addrs':[
{'addr_count':1,'first':'Peyton','last':'Manning','addr1':'123 Cherry St.','city':'Denver','state':'CO','zip':'12345'},
{'addr_count':2,'first':'Patrick','last':'Mahomes','addr1':'123 KC BBQ Blvd','city':'Kansas City','state':'MO','zip':'12345'},
{'addr_count':3,'first':'Tom','last':'Brady','addr1':'123 New England Cir','city':'Boston','state':'MA','zip':'12345'}]},
{'addrs':[
{'addr_count':1,'first':'Drew','last':'Brees','addr1':'123 Nola Way','city':'New Orleans','state':'LA','zip':'12345'},
{'addr_count':2,'first':'Phillip','last':'Rivers','addr1':'123 Beachside Dr.','city':'Los Angeles','state':'CA','zip':'12345'},
{'addr_count':3,'first':'Kyler','last':'Murray','addr1':'123 Dusty Rhoads Dr','city':'Phoenix','state':'AZ','zip':'12345'}
]}
]
}
tpl.render(context)
tpl.save('output/addr_labels.docx')
我的单词模板是:
我这样做是因为Avery地址标签在地址所在的较大单元格之间具有薄表单元格。这有助于格式化。如果删除IF语句,一切正常,但是末尾有多余的小表单元格,因为我要为该行上的所有三个地址重复大表单元格和瘦表单元格。这不是一个很大的问题,但是如果addr_count == 3
(我尝试过addr_count == '3'
和addr_count == 3
并在数字周围加引号的情况下,我真的很想让该精简表单元格不输入)没关系。
这是我遇到的错误。
有人知道如何使用python-docx-template中的FOR循环中嵌套的IF语句吗?
答案 0 :(得分:1)
将{% endif %}
放在小型单元格内,而不是放在其后。
我不确定为什么这样做,我实际上花了很多时间试图弄清楚逻辑。但是,如果有效,它就会起作用。