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

news2024/11/25 12:47:24

前面介绍了《E6低代码开发平台》的Word模版引擎NVeloDocx,实现了表单的基本字段、子表、单张图片、二维码、条形码怎么基于NVelocity脚本输出到Word文件,都是些比较简单且常用的需求。

本篇介绍怎么基于NVeloDocx在Word中插入图表,目前只支持柱状图,折线图,饼图。

当前只支持这3种图表的原因主要还是在Word中插入图表实在是有点困难,这种困难主要体现在软件编码上,很难找到相关的可参考代码,Open Xml SDK仅有的例子都是基于Excel的,拿过来压根不能用。而网络上很少例子,即使有也是基于Open Xml SDK 2.X的,不兼容Open XML SDK 3。

后来基于V2.5的工具Open XML SDK 2.5 Productivity Tool,花费大量的时间才最终把这3个图表的生成代码写出来,个中滋味不足为外人道!

当然花费这么大的代价最终也是很值得的,方便了我们自己,同时也方便了E6的用户,毕竟E6开发平台是永久免费开放的,且绝大部分都是没有软件基础的,要他们去开发个插件基本不可能。

下面进入正题:

要插入图表,首先得有数据源,Word图表的数据源就是一个如下类似的表格,所以能生成图表的也就是子表数据了:

Word图表的数据格式 

那么就需要我们在E6的Word模版数据源配置中,选择好子表,这样才能把对于子表的数据读取出来。由于E6开发平台是完全免费开放的,所以如果想实操,请自行注册下载安装。

 

在E6中设置好数据源 

 

其实整个过程最主要的就是设置好数据子表。图表所需要的子表的操作和E6表单上的子表操作完全相同,可以是主表单上的某个子表,也可以是某个表单的汇总信息,甚至存储过程返回的数据都可以。和普通子表不一样的地方在于,需要一个非数字列,其他的都是数字列(如上图中,非数字列为:保险公司,数字列为:保单保费、折标保费),因为图表显示的数据格式要求如此。

定义好数据后,插入图表的操作就是一行代码了:

柱状图:使用word.InsertBarChart()方法插入柱状图,包括4个参数,如下:

${word.InsertBarChart(${data.GetChild("Policy","DataGridViewForGroupBy1")},"保单汇总",140,90)}

参数1:子表,通过${data.GetChild("Policy","DataGridViewForGroupBy1")}获得子表数据,其中Policy表示子表编号(在E6中,每个表单都有一个编号),DataGridViewForGroupBy1表示控件名(在E6开发平台中可以查看)。

参数2:图表标题,如“保单汇总”;

参数3:图表宽,如“140”(单位毫米);

参数4:图表高,如“90”(宽度毫米)。

柱状图 

基于NVeloDocx是不是非常容易理解?虽然整个开发过程非常困难,但是最终用户的使用就是这么简单。

折线图和饼图的使用方法,除了方法名不一样以外,其他参数都是相同的,所以就不再一一介绍。

折线图:折线图的方法是word.InsertLineChart

${word.InsertLineChart(${data.GetChild("Policy","DataGridViewForGroupBy1")},"保单汇总",140,90,"Stacked")}

折线图 

饼图:饼图的方法是word.InsertPieChart

${word.InsertPieChart(${data.GetChild("Policy","DataGridViewForGroupBy1")},"保单汇总",140,90)}

饼图 

 Word支持很多的图表,但是很多都是基于这3中基本图表的变化,所以想把所有图表都实现其实也是没有太多意义的。


写在最后:基于E6开发平台的NVeloDocx,整个Word模版制作非常容易。

相信使用过NVelocity模版引擎的人都知道,这个模版引擎确实很强,就是出问题排查的时候实在头痛,特别是模版内容很多且命令很多的时候。但是NVeloDocx自带了NVelocity命令错误检测功能(很智能吧?),能够检测到具体是Word模版中哪一段的命令错误,错误原因大概是什么,最多的情况就是命令不正确,#if,#foreach等缺少对应的#end,以及括号是否匹配等等。毕竟E6开发平台的用户绝大部分都是无任何编程经验的。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129089.html

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

相关文章

Java学习 - JDBC

JDBC 这是一些我跟着网课上的JDBC的内容,进行了稍稍的整理 1,JDBC概述 在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。 1.1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套…

24 家国内大模型面经及考点总结!

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升&#…

大模型书籍丨深入浅出的 Transformer 学习,这本大模型应用解决方案太香了

说到Transformer,这个已经是无数人谈论的神经网络的基础架构之一了。但是这期间又有无数的好的,极好的,不好的信息,所以如果你要真的了解它,找本好书来仔细看一下,其实是对得起自己的最好方式! …

企业数据端口和储备设备防泄漏:端口管控软件是什么?

端口管控软件是什么?端口管控:系统基于Windows底层驱动,可智能识别存储设备的类型为海量存储还是非海量存储,不影响USB键盘、鼠标和打印机等接入设备的正常使用; 针对不同的计算机可自定义设置USB端口的读写模式,可设定…

视频编辑SDK解决方案,包含丰富的模板方案

美摄科技作为视频编辑技术的领航者,携其革命性的视频编辑SDK解决方案,正以前所未有的方式,赋能每一位创作者,让图片与视频的碰撞擦出最耀眼的火花,轻松打造个性化、高质量的Vlog作品,满足从日常分享到专业制…

OJ 删除链表的倒数第N个结点

题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 示例: 代码思路: //方法一:class Solution { public: //使用双指针算法ListNode* removeNthFromEnd(ListNode* head, int n) { i…

通信工程学习:什么是MRF多媒体资源功能、MRFC多媒体资源功能控制、MRFP多媒体资源功能处理

一、MRF多媒体资源功能 MRF(Multimedia Resource Function,多媒体资源功能)是3G/IMS网络中定义的提供多媒体资源功能的网络实体,它为3G/IMS网络的业务和承载提供媒体能力支持。MRF通过提供丰富的媒体处理功能,如播放声…

MySQL之库和表操作

目录 一:对库的操作 1.创建数据库 2.查看数据库列表 3.显示创建数据库的语句 4.删除数据库 5.字符集与校验集 6.确认当前所处的数据库 7.修改数据库 8.备份和恢复 9.查看连接情况 二:对表的操作 1.创建表 2.查看表 3.删除表 4.修改表 接下来的日…

【进展报告】9.9-9.12

一、进度概述 1、推进关于滤波的相关任务(详情见相关文件) 二、详情 1、噪声与滤波模块 在师兄 inversionnet 的基础上,在正则化模块前后添加了对应的噪声和滤波模块。 噪声采用的是最基本的高斯噪声和椒盐噪声,关于其他…

OpengGL学习-显示三维形状

本文介绍了OpenGL创建三维图形的几个示例程序。并附有OpenGL创建三维形状的基础示例代码。本文还介绍了OpenGL基础知识,并对Vulkan做了简介。Vulkan性能更强大,但对开发技术人员要求更高,对兼容性的风险和工作量要有充分的认识。兼容性不仅存…

通信工程学习:什么是MGCF多媒体网关控制功能

MGCF:多媒体网关控制功能 MGCF(Media Gateway Control Function,多媒体网关控制功能)是IP多媒体子系统(IMS)网络中的一个关键组件,主要负责实现IMS网络和传统电路交换网络(如PSTN、I…

2024年【建筑焊工(建筑特殊工种)】考试技巧及建筑焊工(建筑特殊工种)作业考试题库

题库来源:安全生产模拟考试一点通公众号小程序 建筑焊工(建筑特殊工种)考试技巧考前必练!安全生产模拟考试一点通每个月更新建筑焊工(建筑特殊工种)作业考试题库题目及答案!多做几遍,其实通过建筑焊工(建筑特殊工种)在线考试很简…

springboot 项目获取 yaml/yml (或 properties)配置文件信息

文章目录 springboot 项目获取配置文件信息前言1、 Autowired 注入 Environment类2、基础用法,使用Value注解直接注入配置信息3、进阶方法(推荐使用)拓展:springboot 集成配置中心 - 以 Apollo 为例 springboot 项目获取配置文件信…

YOLO配合 PYQT做自定义虚拟电子围-自定义绘制多边形虚拟电子围栏

电子围栏标注以及显示 1、目标检测: YOLO可以识别检测物体,这是众所周知的。使用YOLO来做目标检测,并获取坐标信息。 2、电子围栏 比如在监控中,指定一块区域,如果有目标进入,则发出警报,并提…

写的一致性问题之失效模式

文章目录 1、先删除redis缓存,再写入mysql:1.1、高并发情况下分析出现的问题 1、先删除redis缓存,再写入mysql: 此时删除redis成功,写入mysql成功,此时redis是空,mysql是新数据。此时删除redis…

财富通公司开发洗车小程序有哪些用处?

洗车小程序具有多种用处,主要体现在以下几个方面: 1.便捷预约服务:用户可以通过洗车小程序轻松预约洗车服务,无需亲自前往洗车店或打电话预约,节省了时间和精力。同时,小程序通常提供多种预约时间选项&…

Java进阶13讲__补充1/2

单元测试、反射、注解、Lombok 1. 单元测试 1.1 Junit单元测试框架 1.2 Junit框架入门 package com.itheima.a_单元测试;import org.junit.Test;public class SpringUtilTest {Testpublic void testPrintNumber() {StringUtil.printNumber("Jack");StringUtil.pri…

go 笔记

数据结构与 方法(增删改查) 安装goland,注意版本是2024.1.1,不是2024.2.1,软件下载地址也在链接中提供了 ‘go’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 在 Windows 搜索栏中输入“环境变量”&#…

Windows上安装RabbitMQ

rabbitmq是干嘛的我就不介绍了,直接开始安装教程。 搭建成功演示图 下载安装包 https://pan.baidu.com/s/1ZlCFxh9Q00ynSU3ZCpTC9Q?pwdry51​pan.baidu.com/s/1ZlCFxh9Q00ynSU3ZCpTC9Q?pwdry51 下载完后有两个包(erlang和rabbitmq) 先安装otp_win64_24.1.7.exe…

【Python系列】理解 Python 中的时间和日期处理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…