docxtpl 特殊 tr 标签 {%tr %} 不工作

docxtpl special tr tag {%tr %} is not working

您好,我正在使用 docxtpl 从 python 使用 JINJA 模板引擎生成 MS Word 文档,我检查了 this 文档,其中说我们可以为 table 行使用特殊标签,列和段落,但我无法动态生成 table 行。

首先我尝试了以下方式

{% for name in rows %}
{{ name }}
{% endfor %}

但它会将所有项目添加到同一行中,而不会生成新项目。

然后我尝试了上述文档中提到的以下方法。

{%tr for name in rows %}
{{ name }}
{%tr endfor %}

但它会产生以下错误

Encountered unknown tag 'endfor'.

然后我尝试了以下方法,它有效,但它在某种程度上改变了生成的文档边距、格式和样式。所有文档在视觉上都乱七八糟。

row = self.document.tables[3].add_row().cells # add row
row[0].text = '' #add empty text to create paragraph
row[0].paragraphs[0].add_run('Some value') #use run to add value
row[0].paragraphs[0].style = self.document.tables[3].row_cells(3)[1].paragraphs[0].style
#this line copy the style of previous row cell to the current row cell else styles are not preserved

您对 %tr 标签的第二次尝试是正确的,但它在您的模板文档中的格式可能不正确。

尝试在模板中以这种格式使用 for 循环:

我使用该模板生成了以下输出:

我能够根据 this issue on the Github repo which pointed me to this test and this test template 来解决这个问题。