NVeloDocx是基于NVelocity和OpenXml的Word模版引擎,所以遵循NVelocity的语法,但是要求上更为严格。取数指的是在Word模板制作过程中,怎么获取当前正在导出的表单上的某个字段的值,或者怎么遍历某个子表。
在E6中,一个表单可能包括很多个子表,而子表中又可能包括子表,那么在导出的时候都是有可能需要用到的,所以我们这里要介绍的就是怎么取主表的字段和怎么遍历子表。
前面说过在导出Word模版的时候,我们会默认提供一些参数,比如utils表示工具类,比如提供
主表字段的取数语法如下:
1、${data.GetValue("字段名")}
表示取主表本身的字段。假设在客户表单Customer的Word模板中,要取“客户名称”字段,如果其对应的数据库字段名为“__Name__”,则参数“字段名”填“__Name__”。
2、${data.GetValue("引用单据ID\\字段名")}
表示取主表引用的字段。引用字段在E6中主要包括两个部分:“引用路径”和“字段名”,如下图,其中“引用路径”就表示这个字段的所属单据,比如客户引用了“员工”的所属部门字段,如果员工表单ID为“Employee”,部门表单ID为“Department”,那么引用路径就是“Employee\Department”。那么我们就可以这样取数:
${data.GetValue("Employee\\Department\\__Name__")}
知识点:为什么要用双斜杠“\\”呢?因为在NVelocity中(甚至是在C#,Java等主流编程语言中),但斜杠“\”一般表示转义符,如果只填单斜杠,则取数时将会报错。
参考模板:下面是一个Word模板中的片段: