根据NVeloDocx Word模板引擎生成Word(三)

基于永久免费开放的《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,扩展变得更简单;

相关推荐
周末zm8 小时前
golang将word、excel转换为pdf
pdf·word·excel
匆匆整棹还15 小时前
已有账号,重装系统激活office后发现没有ppt,word,excel等
word·powerpoint·excel
ChinaLzw16 小时前
遇到Word打不开,WPS可以打开的解决办法
word
小森( ﹡ˆoˆ﹡ )1 天前
词嵌入方法(Word Embedding)
人工智能·机器学习·自然语言处理·nlp·word·embedding
LKID体2 天前
win32com库基于wps对Word文档的基础操作
c#·word·wps
北笙··3 天前
解决”重复文件名重命名“问题【根据Word系统方式】
java·word
wqqqianqian3 天前
国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现word文件在线留痕
word·在线·uos·国产·银河麒麟·pageoffice·痕迹
hairenjing11235 天前
如何利用内部开源加速创新
人工智能·windows·stm32·macos·开源·word
淮北枳丶5 天前
Apache POI 操作Word常用方法
java·word·apache
玻璃珠5 天前
关于word 页眉页脚的一些小问题
word