NVeloDocx是基于NVelocity和OpenXml的Word模版引擎,所以遵循NVelocity的语法,但是要求上更为严格。
这里主要是针对foreach和if的特殊要求,两者要求相同,下面以foreach为例进行说明。
foreach:分2种情况,
1、Word“段落”中的foreach,那么此时#foreach ... #end必须在同一个段落中。
如下是正确的:
如下是错误的:
因为#foreach和#end不在同一个段落。
导出时将会报这样的错误:“上面我们一共列举了${child.Count}个联系人,分别是:#foreach($item in $child) ${child.GetValue($item,"__Name__")} ”中的命令“#foreach”找不到匹配的#end
2、段落循环。
这种#foreach必须在要循环输出的Word段落的前面,单独成一个Word段落;#end在要循环输出的Word段落的后面,单独成一个段落。比如我们想按下面方式输入客户联系人列表:
则我们可以这么配置:此时#foreach和#end分别在要输出的段落前后。
#if...#end同样。要么都在同一个段落中,要么在Word段落的前后,且单独成为一个段落。