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

前面介绍了《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开发平台的用户绝大部分都是无任何编程经验的。

相关推荐
跟着珅聪学java5 小时前
在Java中判断Word文档中是否包含表格并读取表格内容,可以使用Apache POI库教程
java·开发语言·word
CodeCraft Studio1 天前
国产化Excel处理控件Spire.XLS教程:如何使用 Java 将 TXT 文本转换为 Excel 表格
java·word·excel·spire·文档格式转换·txt转excel
开开心心就好2 天前
电子报纸离线保存:一键下载多报PDF工具
网络·笔记·macos·pdf·word·音视频·phpstorm
书中自有妍如玉2 天前
Node.Js 实现模板生成Word、Word转Pdf文件、Excel生成、上传和下载
pdf·node.js·word
格兰芬多呼神护卫3 天前
python实现Latex格式的公式转OMML并写入word
python·c#·word
不坑老师4 天前
利用不坑盒子在WPS中插入网页,放映的电脑无需安装插件,直接就能显示网页!
microsoft·word·powerpoint·wps
ljh_learn_from_base4 天前
【spring boot 使用apache poi 生成和处理word 文档】
java·spring boot·word·apache
2501_920955574 天前
Word崩溃打不开?实测三款Word文档修复工具!
word
乘风!5 天前
前端Jquery,后端Java实现预览Word、Excel、PPT,pdf等文档
pdf·word·excel·jquery
程序员小羊!5 天前
Flink(用Scala版本写Word Count 出现假报错情况解决方案)假报错,一直显示红色报错
flink·word·scala