You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过遍历同一变量在.docx文档首尾生成两个表格?

问题解决:在DOCX中重复生成同一数据源的表格

问题现象

使用TinyButStrong模板引擎时,尝试在文档开头和末尾各生成一个基于同一数据源var1的表格,但最终仅能生成第一个表格,第二个表格无法正常渲染数据,即使放在不同段落也无效。模板代码如下:

Some document start....

[onshow;block=begin;when [var1.total!=0]

| Name                      | Barcode          |
| ------------------------- | ---------------- |
| [var1.name;block=tbs:row] | [var1.barcode]   |

[onshow;block=end]


Some document middle....


[onshow;block=begin;when [var1.total!=0]

| Name                      | Barcode          |
| ------------------------- | ---------------- |
| [var1.name;block=tbs:row] | [var1.barcode]   |

[onshow;block=end]

Some end of document....

原因分析

TinyButStrong默认对数据源的遍历是一次性的,第一次渲染表格时已经将var1的数据源游标移到了末尾,第二次遍历同一数据源时没有重置游标,所以无法获取到数据,导致第二个表格无法生成行内容。

解决方法

在第二个表格的行块标签中添加pos=1参数,强制重置数据源的游标到起始位置,这样就能重新遍历整个数据源生成表格。修改后的模板代码如下:

Some document start....

[onshow;block=begin;when [var1.total!=0]

| Name                      | Barcode          |
| ------------------------- | ---------------- |
| [var1.name;block=tbs:row] | [var1.barcode]   |

[onshow;block=end]


Some document middle....


[onshow;block=begin;when [var1.total!=0]

| Name                      | Barcode          |
| ------------------------- | ---------------- |
| [var1.name;block=tbs:row;pos=1] | [var1.barcode;pos=1]   |

[onshow;block=end]

Some end of document....

说明:pos=1表示将数据源的位置指针重置到第一条记录,确保第二次遍历能从头开始读取数据。若使用的是TBS旧版本,可尝试替换为pos=0测试。

内容的提问来源于stack exchange,提问作者Felipe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:50:28