根据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.mzph.cn/diannao/54081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【四】k8s部署 TDengine集群

k8s部署 TDengine集群 目录 k8s部署 TDengine集群 一、在 Kubernetes 上部署 TDengine 集群 第一步:创建命名空间 第二步:从yaml创建有状态服务 StatefulSet 第三步:配置 Service 服务 二、集群测试 一、在 Kubernetes 上部署 TDengine…

实习期间git的分枝管理以及最常用的命令

各位找工作实习的友友在工作之前一定要把git的相关知识掌握呀,我实现期间被leader说过关于git规范的相关问题了 目前已更新系列: 当前::实习期间git的分枝管理以及最常用的命令 Redis高级-----持久化AOF、RDB原理 Redis高级---面试总结5种…

Android SPN/PLMN 显示逻辑简介

功能描述 当设备驻网后(运营商网络),会在状态栏、锁屏界面、下拉控制中心显示运营商的名称。 此名称来源有两种: 1、SPN(Service Provider Name) 2、PLMN (Public Land Mobile Name) 功能AOSP默认逻辑SPN提供SIM卡的运营商名称预置在SIM EF中,SIM卡发行运营商名称…

微软九月补丁星期二发现了 79 个漏洞

微软将在2024 年 9 月补丁星期二修复 79 个漏洞。 微软有证据表明,发布的四个漏洞被野外利用和/或公开披露;所有四个漏洞均已在CISA KEV上列出。微软还在修补四个关键的远程代码执行 (RCE) 漏洞。 不同寻常的是,微软本月尚未修补任何浏览器…

AI替代插画师跟设计师?不用焦虑!

一个固定的工作流, 一个训练好的lora模型 输入一段提示词 二三十秒的时间,就能生成一张精致美观有韵味的中秋国风插画 这张不喜欢,改下提示词重新生成一张不一样的。还是二十几秒 同样的插画,你用手绘,从起稿到上…

【Unity】为脚本添加头部注释

1 前言 默认创建的脚本头部是没有注释的,有时候我们想要在创建脚本时在脚本内容的最前面加上一个注释来标注脚本的相关信息,比如创建者、创建时间、描述等等。那么提供有两种实现方式。 2 方法 2.1 修改Unity的脚本Script 打开Unity Hub,找…

【Linux进程】Linux Shell编程实战:构建简易脚本示例与技巧详解

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:Linux “ 登神长阶 ” 🤡往期回顾🤡:暂无 🌹🌹期待您的关注 🌹🌹 ❀Linux进程 📒1. 获取输入&…

俄罗斯方块——C语言实践(Dev-Cpp)

目录 1、创建项目(尽量不使用中文路径) 2、项目复制 3、项目配置 ​1、调整编译器 2、在配置窗口选择参数标签 3、添加头文件路径和库文件路径 4、代码实现 4.1、main.c 4.2、draw.h 4.3、draw.c 4.4、shape.h 4.5、shape.c 4.6、board.h 4.7、board.c 4.8、cont…

iOS - TestFlight使用

做的项目需要给外部人员演示,但是不方便获取对方设备的UDID,于是采用TestFlight 的方式邀请外部测试人员的方式给对方安装测试App,如果方便获取对方设备的UDID,可以使用蒲公英 1.在Xcode中Archive完成后上传App Store Connect之前…

数据结构(2):LinkedList和链表[2]

我们在上一篇文章中着重讨论了单链表的实现。其中我们要注意单链表进行遍历时一步一步走的思想。那么这篇文章我们将继续讨论链表的更多内容,那就让我们开始吧。 1.经典单链表算法题 我们将通过几个经典的题对单链表进行进一步的认识。 (1)反转链表 206. 反转链…

clip论文阅读(Learning Transferable Visual Models From Natural Language Supervision)

目录 摘要训练pre-train model的过程将pre-train model应用于下游任务应用(待更新) 论文/项目地址:https://github.com/OpenAI/CLIP 提供了clip的pre-trained model的权重,也可安装使用pre-trained model 摘要 使用标签标注的图…

C++过生日(我给我自己做的生日礼物)

🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 引言…

电脑开机速度慢怎么解决?

电脑开机速度慢怎么解决?电脑开机速度慢的原因可以是多方面的,以下是一些常见的原因: 启动项过多: 许多软件在系统启动时会自动启动,导致启动项过多,从而延长了开机时间。过时的驱动程序: 设备…

wpf触发与模板的使用示例:批量生产工具

批量生产工具 <Window x:Class"WpfM20UpdateFW.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressio…

2024年Java后端学习路线

思维导图&#xff1a; 必备知识&#xff1a; Java基础 JavaWeb 数据库&#xff1a;MySql&#xff0c;Redis 开发中间件&#xff1a;Maven &#xff0c;Git &#xff0c;Docker&#xff0c;RabbitMQ 开发框架&#xff1a;SSM&#xff0c;spring boot&#xff0c;mybatis-plus、s…

十一、DMSP/OLS、NPP/VIIRS等夜间灯光数据之GDP空间化——新方法理论介绍

一、前言 之前的空间理论方法是将第一产业GDP和第二、三产业GDP分开,第一产业GDP和耕地面积进行反演,第二、三产业GDP和夜间灯光指数进行拟合,或者干脆不划分产业,就是第一、二、三产业gdp数据和夜间灯指数拟合。之前给大家介绍都是这种,那么现在很多文献提出一种新的做法…

JVM 运行时数据区域

目录 前言 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 前言 首先, java程序在被加载在内存中运行的时候, 会把他自己管理的内存划分为若干个不同的数据区域, 就比如你是一个你是一个快递员, 一堆快递过来需要你分拣, 这个时候, 你就需要根据投放的目…

[产品管理-23]:NPDP新产品开发 - 21 - 产品创新中的市场调研 - 市场调研对创新产品开发的意义

目录 前言&#xff1a; 一、市场调研概述 1.1 客户与市场的区别 1、定义与范围 2、关注焦点 3、作用与影响 4、总结 1.2 销售与市场的区别 1、对象与范围 2、工作方式 3、工作内容 4、目标 5、考核标准 6、在企业运营中的角色 1.3 什么是市场调研 1、市场调研的…

COMDEL电源维修CLX2500康戴尔射频电源维修

美国COMDEL射频电源维修常见型号包括&#xff1a;CLX2750&#xff1b;CLX2500&#xff1b;CLX-600H&#xff1b;CX600AS&#xff1b;CX-5000S&#xff1b;CX-3500S&#xff1b;CX-2500S&#xff1b;CV500&#xff1b;CDX2000等。 Comdel成立于1966年&#xff0c;总部设在马萨诸…

Golang | Leetcode Golang题解之第406题根据身高重建队列

题目&#xff1a; 题解&#xff1a; func reconstructQueue(people [][]int) (ans [][]int) {sort.Slice(people, func(i, j int) bool {a, b : people[i], people[j]return a[0] > b[0] || a[0] b[0] && a[1] < b[1]})for _, person : range people {idx : pe…