联系
我们

工作日 9:00-18:00

13632615190

插入图表详解

NVeloDocx是基于NVelocity和OpenXml的Word模版引擎,所以遵循NVelocity的语法,但是要求上更为严格。

目前NVeloDocx支持“柱状图”、“折线图”、“饼图”,图表是子表数据,我们可以使用“存储过程子表”或者“汇总表”等进行取数。

下面我们以“汇总表”为例进行说明。


第一步:在Word导出模板配置界面,从工具箱中点击“汇总表”添加到界面空白处,可以看到控件名为“DataGridViewForGroupBy1”后面要用到。

image.png


第二步:选择刚增加的汇总表控件,设置“所属单据”属性,我们这里设置为Policy;

第三步:设置过滤条件,汇总表如果不设置过滤条件,则会汇总整个所属单据对应的表,这显然不是我们想要的;

由于导出的是客户表单,所以:

保单管理.__FK_Customer_ ,由于保单引用了客户,所以一定有这个字段;

GetValue("__ID__"):表示正在导出的客户记录ID。

image.png


第四步:列设置,其中“保险公司”列将会作为我们图表的“图表系列”,其他的列为数字列。

image.png


第五步:在Word模板中使用下面脚本插入图表。

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


${word.InsertBarChart(...)} 表示插入柱状图

参数2${data.GetChild("Policy","DataGridViewForGroupBy1")} 取上面的汇总表数据,Polily表示汇总表所属单据ID,DataGridViewForGroupBy1表示汇总表控件名;

参数2:保单汇总,表示图表标题;

参数3:图表宽,单位是毫米,这里表示140毫米;

参数4:图表高,单位是毫米,这里表示90毫米;


汇总表数据:

image.png

所以导出后如图:其中保险每一行的第一列“保险公司名称”对应图表的“系列”,数字列的“保单保费”“折标保费”对应图表的“类别”。

image.png


图表结构参考:

image.png


插入折线图用:

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


插入饼图用:

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