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 来解决这个问题。
您好,我正在使用 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 来解决这个问题。