NVeloDocx是基于NVelocity和OpenXml的Word模版引擎,所以遵循NVelocity的语法,但是要求上更为严格,但同时也更为健壮,能够提前解析并发现很多语法错误。
这里给出一些常见错误,供您参考:
1、发布报错:
正由另一进程使用,因此该进程无法访问此文件
这是由于您正在编辑Word模板,所以关闭Word,重新发布即可。
2、缺少括号,比如下面命令会报错:
“#foreach($str in ${utils.SplitStr(${data.GetValue("beizhu")})}”中缺少“)”
检查后我们发现,“(”、“{”这两个括号没有完全匹配,缺少了“)”。
正确的应该是:#foreach($str in ${utils.SplitStr(${data.GetValue("beizhu")})})
3、括号不匹配
“${utils.SplitStr(${data.GetValue("beizhu")}))}”中的括号“{”和“)”不匹配
检查后发现,确实存在括号不匹配。
正确的应该是:${utils.SplitStr(${data.GetValue("beizhu")})}),存在了多余的“)”
4、Encountered...
错误段落:“#if("${data.GetValue("__Level__")}"=="A")”;错误信息:Encountered "__Level__" at line 1, column 23.
这种往往就是语法错误。比如上面的错误的段落中的if命令后面的"${data.GetValue("__Level__")}",这里由于是用了双引号,但是双引号里面又有双引号,这是不符合语法规范的,我们可以写成:"${data.GetValue('__Level__')}"中间的GetValue('__Level__')用单引号就对了。
5、书写不规范
“${word.InsertBarChart(${data.GetChild("Policy","DataGridViewForGroupBy1"),"保单汇总",140,90})}”书写不规范,逗号只能包含在(..)或者[..]中
这种粗看好像是没有问题的,括号这些都匹配,但是仔细检查后,结合错误原因发现原来是这样的:
${data.GetValue("Policy", "xxxx"), "保单汇总", 140, 90} 这里不符合规范,${} 不是方法,所以不能包括逗号。