NVeloDocx是基于NVelocity和OpenXml的Word模版引擎,所以遵循NVelocity的语法,但是要求上更为严格。
实际应用中,假设我们表单中有图片列表:
我们往往需要把图片列表分栏(比如2栏)插入到Word报告的某个表格中,如下图:
步骤详解:
假设图片列表的单据ID为:CustomerPictureBoxList
1、使用${data.GetChild("CustomerPictureBoxList")}获得图片列表数据,并赋值给变量$child;
2、使用${utils.ToArr($child, 2)}将图片列表拆分成每2条图片记录为一组的新列表,并赋值给$items;
3、使用#foreach循环图片表格,此时#foreach和对应的#end必须在表格的前后(Word中如果2个格式相同的表格中间无其他段落,则最终这些表格会自动组合成一个大表格)
4、调用${word.InsertImg(${child.GetValue(${item.GetValue(1)},"__Path__")},65,45)}将图片插入对于的单元格。此时需要注意的是,下面的foreach由于循环的是$items变量,而$items又是一个包括2个元素的小数组,所以我们第一张图片数据使用${item.GetValue(0)} 第二张图片使用 ${item.GetValue(1)}获得图片数据。