根据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文档中,水印就会自动替换成当前操作用户的用户名+用户编号。
总算完结了,给有需要的朋友一个参考。
相关文章:
根据NVeloDocx Word模板引擎生成Word(六-结束)
前面几篇已经把E6开发平台配套的Word模版隐藏NVeloDocx的基础用法介绍了一遍,这些基础用法基本上可以完全覆盖实际业务的绝大部分需求。所以我们这一篇就介绍一些边边角角的内容,给本系列来一个首尾。 本篇的主要内容有: 1、汇总计算&#…...
Android架构组件:MVVM模式的实战应用与数据绑定技巧
目录 引言 一、MVVM模式概述 1.1 MVVM模式简介 1.2 MVVM模式的优势 二、MVVM模式的实现 2.1 项目环境配置 2.2 创建MVVM组件 2.2.1 创建数据模型 2.2.2 创建数据仓库 2.2.3 创建ViewModel 2.2.4 创建布局文件 2.2.5 创建RecyclerView适配器 2.3 在Activity中绑定V…...
调用系统的录音设备提示:line with format PCM_SIGNED 16000.0 Hz
javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 16000.0 Hz, 8 bit, mono, 1 bytes/frame, not supported. 打开 设置->隐私->麦克风->允许应用访问你的麦克风 与 16000Hz没关系 与 16000Hz没关系 与 16000Hz没关系...
android BLE 蓝牙的连接(二)
下面是基于实际的项目得到的具体步骤及核心代码 1、权限问题 先判断手机是否满足android4.3以上版本,再判断手机是否开启蓝牙 主要涉及蓝牙权限和位置权限,注意不同android版本之间权限申请的差异,以及android权限动态申请和静态申请的区别 …...
改编pikachu的打靶经历(题目不全)
前言 题目很少,只做了一些。正常版本的,完整的pikachu可参考下面这个师傅写的 https://www.cnblogs.com/henry666/p/16947270.html xss (get)反射xss 先尝试 1 这里有长度限制,而且,我改了长度…...
Linux进阶 修改文件所有者
修改文件所属组群——chgrp 修改文件所属组群很简单-chgrp命令,就是change group的缩写(我们可以利用这些来记忆命令) 语法:chgrp 组群 文件名/目录 举例: [root@redhat ~]# groupadd groupa[root@redhat ~]# groupadd groupb[root@redhat ~]# useradd -g groupa zgz[r…...
第312题|二重积分求旋转体体积(二)|武忠祥老师每日一题
解题思路:先画出图像,再利用旋转体体积计算公式进行解题。 1. 旋转体体积计算公式: 2.点到直线计算公式: 有了上面两条知识储备之后我们开始计算。 第一步:先计算出点到直线的距离: ymx,y-mx…...
redis基本数据结构-set
文章目录 1. set的基本介绍1.1. set底层结构之hash表的简单介绍1.2. 常用命令 2. 常见的业务场景2.1. 标签系统2.2. 社交网络好友关系 1. set的基本介绍 参考链接:https://mp.weixin.qq.com/s/srkd73bS2n3mjIADLVg72A redis 的 set 数据结构是一个无序的集合&#…...
Android 应用安装-提交阶段
经过前面准备、浏览、协调这些步骤,马上要进入提交阶段了。所谓提交,就是把这些安装应用的相关信息和状态都放到系统中。对于已安装普通应用,它其实分为两个步骤,先卸载旧包,再安装新包。当然,如果是新安装…...
强化学习Reinforcement Learning|Q-Learning|SARSA|DQN以及改进算法
一、强化学习RL 强化学习是机器学习的一个重要的分支,是一种有效的工具,在文献中被广泛用于解决MDP问题。在一个强化学习过程中,一个智能体只能通过和它所处的环境互动学习最优策略。特别地,智能体首先观察自己当前的状态…...
【HarmonyOS NEXT开发】如何设置水平/垂直方向的左/居中/右对齐——RelativeContainer的AlignRules设置
文章目录 【HarmonyOS NEXT开发】如何设置水平/垂直方向的左/居中/右对齐——RelativeContainer的AlignRules设置RelativeContainer 和 AlignRules 的关系AlignRules 语法详解 【HarmonyOS NEXT开发】如何设置水平/垂直方向的左/居中/右对齐——RelativeContainer的AlignRules设…...
java之认识异常
在 Java 中,异常(Exception)用于处理程序运行时出现的错误或异常情况。Java 的异常处理机制基于 try, catch, finally 和 throw 关键字。 1.异常的分类: 1.1:检查型异常(CheckedException): 定义:程序在…...
JSON处理工具类
JSON处理工具类 import org.json.JSONArray; import org.json.JSONObject;import java.util.ArrayList; import java.util.List;/*** JSON处理工具类*/ public class JsonUtils {/****将json字符串转为map* param json* return java.util.Map<java.lang.String, java.lang.O…...
2022高教社杯全国大学生数学建模竞赛C题 问题一(2) Python代码演示
目录 1.2 结合玻璃的类型,分析文物样品表面有无风化化学成分含量的统计规律数据预处理绘图热力图相关系数图百分比条形图箱线图小提琴图直方图KED图描述性统计分析偏度系数峰度系数其它统计量1.2 结合玻璃的类型,分析文物样品表面有无风化化学成分含量的统计规律 数据预处理 …...
ARACom Proxy Class API 概念
1. Proxy Class 概述 生成方式:Proxy Class 是从 AutoSar 元模型的服务接口描述中生成的,ara::com 标准化了其接口,AP 产品供应商的工具链会生成实现该接口的代理实现类。 命名空间:ara::com 期望代理相关的工件在命名空间 “pro…...
【Scala入门学习】基本数据类型和变量声明
1. 基本数据类型 scala 的基本类型有 9种: Byte、Char、Short、Int、Long、Float、Double、Boolean、Unit Scala中没有基本数据类型的概念,所有的类型都是对象。 AnyVal:代表所有基本类型。 AnyRef:代表所以引用类型ÿ…...
C#基础(13)结构体
前言 随着函数的讲解完成,我想你已经初步有了写一些复杂逻辑功能的能力,但是我们会发现其实在我们大部分实际开发情况中,很多我们需要写的变量可能不只有一个属性。 他可能有很多变量,那这时候我们如果要把这些变量集中到一个东…...
Excel图片批量插入单元格排版处理插件【图片大师】
为了方便大家在图片的插入排版的重复工作中解放出来,最近发布了一款批量插入图片的插件,欢迎大家下载,免费试用。 这是图片的文件夹: 主要功能如下: 1,匹配单元格名称的多张图批量插入到一个单元格 该功能支持设置图…...
应用性能优化实践(二)提升应用启动和响应速度
一、提升应用启动和响应速度的方法 1、冷启动过程简介 应用启动时,后台无该应用的进程,需要创建新的进程,这种启动方式叫冷启动。 2、使用异步加载 使用异步加载可以在后台线程中处理耗时操作,从而提升应用响应速度。 3、延迟加载…...
接口测试系列文章专题
在你眼中什么是接口 HTTP协议 什么是接口测试 接口测试之工具 fiddler工具的原理 fiddler工具界面详解 fiddler工具的基本使用 fiddler使如何对手机app进行抓包的呢 fiddler手机app抓包教程 Charles自定义接口返回的数据内容 常用接口工具postman的基本使用方式 pos…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
