当前位置: 首页 > news >正文

根据NVeloDocx Word模板引擎生成Word(六-结束)

前面几篇已经把E6开发平台配套的Word模版隐藏NVeloDocx的基础用法介绍了一遍,这些基础用法基本上可以完全覆盖实际业务的绝大部分需求。所以我们这一篇就介绍一些边边角角的内容,给本系列来一个首尾。

本篇的主要内容有:

1、汇总计算:比如我们经常遇到的Word报告中的配件清单,需要能够计算总耗时,总费用等等;

2、E6脚本:基于NVeloDocx,我们同样可以使用E6脚本,比如使用E6脚本进行日期格式化,进行金额字段的小写数字转换成中文等等;

3、水印:水印也可以通过NVelocity命令进行填充;

下面我们来一个个进行介绍:

汇总计算:

比如我们在使用子表数据填充Word表格的时候,很多时候需要显示一个汇总行,甚至于某些情况下还需要把金额转换成大写形式,如下图:

子表最后一行是汇总行

那么我们怎么设置这个模板呢?还记得前面《根据NVeloDocx Word模板引擎生成Word(二)》中已经介绍过子表输出到Word表格时的模板语法,这里也是一样的,只不过要汇总我们必须要一个新变量(下图模版中的$total)来保存每个循环的叠加汇总。

 模版

变量的定义自然需要再循环开始前进行定义,所以我们在#foreach前定义变量#set($total=0)。

变量的汇总我们在#end前,先把要汇总的字段值取出来赋值给变量$baofei,也可以不用这么做,这么做的原因主要是让后面的汇总命令短一点,不易出错而已。所以下面两种写法都是对的:

第一种:就是上图中的这种:

#set($baofei=${child.GetValue($item,"baodanbaofei")})

#set($total=${utils.Add($total, $baofei)}) # 这里表示把total变量和保费变量相加后再复制给total

第二种直接相加(不建议这种方式)

#set($total=${utils.Add($total, ${child.GetValue($item,"baodanbaofei")})})

这里为了实现两个变量相加,我们引入了一个工具方法utils.Add(参数1,参数2),为什么要这么做呢?因为如果直接使用#set($total = $total + $baofei)的话,就可能失败,我总觉得这是NVelocity的一个Bug!!!

汇总后要把汇总金额转成大写,通过工具方法${utils.ToCapital($tatal)} 即可,如上面的模版图。


E6脚本

在NVeloDocx模版引擎中也可以使用E6脚本,最常见的比如显示当前日期,比如报告日期就可以使用E6脚本来实现:

报告日期 

模版如下:通过工具方法 ${script.Exc("Today()")} 来执行一个E6脚本,其中 "Today()"就是要执行的E6脚本。

模版 


水印:

比如要在生成的Word中显示水印信息,当前“用户名+用户编号”这种显然是一个动态的信息,就可以通过设置水印为E6脚本,生成Word时再进行动态计算。

 水印效果图

在Word中设置水印的方法:

设置中-水印菜单

 选择自定义水印

设置水印“文字”为E6脚本 

在水印设置时,就可以设置水印“文字”为执行E6脚本:

${script.Exc("UserName()+UserNO()")}

其中:

UserName():E6脚本,表示当前登录用户的姓名;

UserNO():E6脚本,表示当前登录用户编号;

这样生成的Word文档中,水印就会自动替换成当前操作用户的用户名+用户编号。

总算完结了,给有需要的朋友一个参考。

http://www.lryc.cn/news/439594.html

相关文章:

  • Android架构组件:MVVM模式的实战应用与数据绑定技巧
  • 调用系统的录音设备提示:line with format PCM_SIGNED 16000.0 Hz
  • android BLE 蓝牙的连接(二)
  • 改编pikachu的打靶经历(题目不全)
  • Linux进阶 修改文件所有者
  • 第312题|二重积分求旋转体体积(二)|武忠祥老师每日一题
  • redis基本数据结构-set
  • Android 应用安装-提交阶段
  • 强化学习Reinforcement Learning|Q-Learning|SARSA|DQN以及改进算法
  • 【HarmonyOS NEXT开发】如何设置水平/垂直方向的左/居中/右对齐——RelativeContainer的AlignRules设置
  • java之认识异常
  • JSON处理工具类
  • 2022高教社杯全国大学生数学建模竞赛C题 问题一(2) Python代码演示
  • ARACom Proxy Class API 概念
  • 【Scala入门学习】基本数据类型和变量声明
  • C#基础(13)结构体
  • Excel图片批量插入单元格排版处理插件【图片大师】
  • 应用性能优化实践(二)提升应用启动和响应速度
  • 接口测试系列文章专题
  • Unity Hub自动安装指定版本Unity的Android开发环境
  • 从0开始学ARM
  • 每日一题——第九十四题
  • Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
  • 后续学习规划 ----含我个人的学习路线,经历及感受
  • Skytower
  • 成型的程序
  • 卡尔曼滤波中Q和R与噪声的关系
  • sicp每日一题[2.10]
  • MCN跨国企业如何从0到1搭建ITSM运维体系
  • 【C++入门学习】7. 类型