根据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,扩展变得更简单;

相关推荐
工具派8 小时前
Word文档太大怎么拆分?段落结构与两种拆法的边界实测
开发语言·c#·word
Metaphor6928 小时前
Python 实现 Word/TXT 互转:附完整代码
python·word·格式转换·txt
小羊没烦恼!9 小时前
【译】利用Asp.net MVC处理文件的上传下载
开发语言·缓存·c#·word·powerpoint·.net
小羊没烦恼!7 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
Am-Chestnuts7 天前
DeepSeek表格复制到Word变竖线错列?用DS随心转对比几种整理方法
人工智能·word·ds随心转
2501_9307077810 天前
使用C#代码为新创建的 Word 文档创建目录
c#·word
SunnyDays101110 天前
Java 拆分 Word 文档教程:按页、分页符和分节符拆分
java·word·分页·拆分
copilot中国版11 天前
Word Copilot|一键提取文档关键信息,告别逐字阅读
word·copilot
天人合一peng13 天前
西北工业大学校外访问系统
word
古少侠13 天前
deepseek转word工具怎么选?DS随心转与4种方案对比实测
人工智能·word·powerpoint