基于永久免费开放的《E6低代码开发平台》的Word模版引擎NVeloDocx,实现根据Word模版生成Word文件,前面2篇已经非常详细介绍了《主表单字段》,《子表记录循环输入到表格》。那这一篇我们就介绍插入单张图片、二维码,条形码等等,它们同样的简单,我们在设计每一个方法的时候都尽可能设计得简单易用,因为毕竟E6低代码的用户绝大部分都是毫无代码经验的人士:
单张图片在E6低代码开发平台中对应找一个单张图片框,类似于下图的头像,这种单张图片有自己的数据库字段名:
单张图片
由于有自己的数据库字段名,所以我们就可以用主表字段取数的方式获取到这张图片,如(这里取到的是图片的系统内存储路径):
${data.GetValue("__HeaderImg__")}
取到了图片之后我们就可以使用扩展的方法word.InsertImg在需要的位置插入图片了:
${word.InsertImg(${data.GetValue("__HeaderImg__")}, 33, 32)}
${word...} 包括插入图片、插入条形码、插入二维码、插入图表等等一系列的扩展方法,其中word.InsertImg包括3个参数,非常易于理解:
参数1:就是我们的图片路径;
参数2:表示图片在word中显示的宽度(单位是毫米);
参数3:表示图片在word中显示的高度(单位是毫米)。
模版如下:
插图图片的模版
插入图片的效果如图:
生成Word文档的效果
二维码和条形码在E6中只会存储二维码和条形码的数据,而不会存储相关的图片,是在需要的时候才会生成码图。
所以要插入二维码,那么我们需要使用到word.InsertQRCode扩展方法,如下:
${word.InsertQRCode(${data.GetValue("__WebSite__")},25,25)}
word.InsertQRCode方法同样包括3个参数:
参数1:二维码内容()可以使用主表取数方法${data.GetValue("__WebSite__")}取得要生成的二维码的字符串,可以使用“+”拼接多个字段;
参数2:表示二维码在word中显示的宽度(单位是毫米);
参数3:表示二维码在word中显示高度(单位是毫米)。
模版如下:
效果图如下:
插入条形码用到扩展方法word.InsertBarChart,这个方法和插入二维码的完全相同,区别在于只有数字才能生成条形码,如果是其他字符串那生成出错。所以插图条形码的就不再细述了。
后记:
由于NVeloDocx基于NVelocity模版引擎,所以我们只要了解NVelocity那么就能够轻松使用NVeloDocx。另外由于基于模版引擎,所以我们同样可以再页眉页脚中使用模版标签,在页面页脚中插入文字、图片,二维码,调下码等等。
下面就是一个在页面中插图二维码的例子:
页眉中插入二维码
页眉中插入二维码的效果图
基于NVeloDocx,使得以前使用书签,占位符,甚至编辑word xml才能导出word文档的工作变得非常轻松且可视化。
书签和占位符都有极多的局限性,特别是涉及到子表遍历,条件显示、内容格式等等的时候极其困难,不得不为了解决这些问题定义很多奇奇怪怪的标签。所以采用书签和占位符的方法基本上只有硬编码的场景下才适用。
编辑Word Xml的方法确实可以很好地保留格式,并且结合NVelocity等模版引擎可以实现几乎我们想要实现的Word文档生成,但是要在一个几千行的Word xml文件中去增加标签,去增加循环等等是非常非常困难的,就连我们的开发人员也都非常头疼。特别是后期Word模版哪怕一个小小的变更都可能需要完全重新制作xml模版。
基于NVeloDocx,一切都变得可视化,高效而精确!
基于NVeloDocx,使得E6的用户人人都可以编辑自己的Word模版;
基于NVeloDocx,扩展变得更简单;