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

前面讲到了根据"永久免费开放的E6低代码开发平台 "的NVeloDocx Word模版引擎生成Word文件的基础取数方法,包括取本表单字段以及引用字段,详见《根据NVeloDocx Word模板引擎生成Word(一)》。

针对这种基本的取数方法,有朋友认为还不如用Word的"书签",其实如果仅仅只是本表单的字段,不涉及子表、图片、图表等等,书签确实是可行的,也有人这么干!但是哪怕VB年代,我们也做过类似的,只不过用的是#TagName#这样的方式在Word中进行查找替换。

但是当涉及到子表、涉及到循环、条件判断等等的时候,发现书签 和**#TagName#**这种方式都不是很好,当然约定一些特殊的书签名称或者TagName用于表示子表,循环,条件貌似也没有问题,但是引入了特殊的标记,易用性和扩展性上就大打折扣。

进入正题:

怎么基于NVeloDocx实现填充Word中的表格呢?比如我们要填充客户联系人表格,希望每个联系人一个表格,多个联系人则显示多个表格,先来一张图:

基于NVeloDocx填充子表

由上图可以看到,要填充子表首先需要获得子表数据,我们使用下面的语法获得子表数据,语法基于NVelocity,只不过我们的data数据对象中提供了GetChild方法,可以获得子表数据对象,参数"CustomerContact"表示子表"客户联系人"编号(在E6开发平台中,每个表单都有一个唯一的自定义编号)

#set(child={data.GetChild("CustomerContact")})

得到子表后,就可以使用NVelocity语法遍历填充表格了,上面得到的子表数据对象赋值给了NVelocity变量$child,这是一个可遍历对象,所以可以用#foreach进行遍历:

#foreach(item in {child})

......

#end

剩下的就是取子表字段填充表格了,比如要填充联系人名,则使用NVelocity语法如下:

{child.GetValue(item,"Name")}

子表对象child和主表对象data一样,可以通过GetValue取某个字段的值,区别在于子表对象由于有多行,所以需要加一个#foreach循环因子参数item(主表对象的取值其实也是类似的,由于主表只有一条,那么可以这么取值:{data.GetValue("Name")}或者${data.GetValue(0, "Name")},所以主表子表的取值方式是一致的)。

由于NVeloDocx基于NVelocity,所以整个语法很简单易学。设计好模版后发布测试效果如下:

效果

那如果不是每条子表记录一个表格,而是所有子表记录输入成一个表格怎么做呢?如下图所示,在下图中,我们做了一些技巧上的处理(这个处理比很多其他的子表循环输出的处理方式易用了很多,且不需要特殊的标记):

在表格正文行前后分别增加一行并且合并所有单元格后 ,用于填写#foreach和#end命令,中间行就是正文即可,非常易于理解的处理方式,用这种方式进行处理,还可以有#if条件判断命令等等。

子表数据输出在同一个表格中

生成的Word文档效果如下:

效果

基于#foreach循环,我们也可以不把子表数据输出到表格,而是直接输出到文本列表,比如下面这样的:

编辑好模版格式:

然后生成后效果如下:

通过这两个例子我们可以看到,基于NVeloDocx,我们不仅仅可以直接在Word中编辑模版(可视化编辑),还可以很好地保留了文档的格式,比如上图,我们模版中设置了列表、粗体、红色等等,生成Word后都很好地保留了这些格式。

如果您正在使用E6,也需要输入Word报告或者文档,那么相信您看完这两篇文章后已经可以上手了。下一篇我们将介绍图表。

相关推荐
Am-Chestnuts3 小时前
豆包表格复制到 Word 后错列,先保留 Markdown 再转换
word
DS随心转APP5 小时前
deepseek生成的word怎么下载 AI导出鸭全平台方案技术深度测评
人工智能·ai·chatgpt·word·deepseek·ai导出鸭
DS随心转小程序8 小时前
AI 导出鸭重构转化链路,全面优化腾讯元宝输出 word 文档办公效率
人工智能·重构·aigc·word·豆包·deepseek·ai导出鸭
皮皮虾❀10 小时前
千问办公+Office一站式生成+原生编辑一体化实战:从“AI生成文档格式错乱”到“PPT/Word/Excel直接出成品可商用”的交付型AI落地路径
人工智能·word·powerpoint
AI导出鸭11 小时前
怎么让豆包做表格?AI导出鸭苹果版将豆包输出的管道表格智能解析为二维结构,一键导出为Excel或Word标准表格。
人工智能·chatgpt·word·excel·ai导出鸭
yuhulkjv33519 小时前
Claude表格复制到word不再崩溃,AI导出鸭批量导出+格式无损一键搞定
人工智能·ai·c#·word·ai导出鸭
DS随心转小程序21 小时前
ChatGPT 文字怎么转为 word?解析各类转换方案,AI 导出鸭成为高效文档转换新选择
人工智能·chatgpt·word·豆包·deepseek·ai导出鸭
DS随心转小程序1 天前
借助 AI 导出鸭简化各类办公场景下文心输出 word 文档全流程操作
人工智能·aigc·word·豆包·deepseek·ai导出鸭
AI刀刀1 天前
腾讯元宝粘贴到 word 格式混乱,AI 导出鸭一键规整排版
人工智能·c#·word·ai导出鸭
glustful1 天前
Word在线编辑技术体系全景深度分析
word·在线文档·docx