润乾报表 V2018-Api 设置内建数据集

内建数据集是指数据集的结构和数据都存入报表模板,运算报表的时候不再需要从数据源取数。一般情况下,主要满足以下两种需要:

1、可以让用户快速的体验建立报表的过程,只需在报表设计器中定义一个内建数据集,录入一些模拟数据就可以在报表中使用了,这样给用户的体验过程带来了极大的方便。

2、可以用于报表的跟踪调试,当报表预览结果和预想的结果不符合时,可以把数据集转为内建,然后把报表模板发给技术支持人员,方便支持人员跟踪调试(否则,在无源的状态下,不能调试则无法及时发现问题)。

当然,根据用户特殊需求,内建数据集也可以作为一个巧妙的功能点来使用。

比如,有用户采用 MVC 框架结构,控制层调用服务层产生报表要展现的数据,报表只需将服务层返回的数据展现即可,不需要任何数据方面运算。

往往这种情况,在未考虑到内建数据集的时候,基本的解决方案是自定义数据集,由自定义数据集直接调用服务层返回数据封装成 Dataset 用于展现。再或者控制层获取到数据后保存成文件,再由自定义数据集读取展现。

但,客户要求严格按照 mvc 结构来做,不允许报表调用服务层。保存成文件再读取又怕并发大出问题,过程也繁琐。这就无法让报表读到生成的数据了。那么这个时候,内建数据集就很好用了。

基本的原理是,终端用户发请求是控制层,控制层从服务层获取数据,后控制层读取已定义好格式的报表文件,将获取的数据封装成报表的内建数据集即可,最终采用 bean 形式直接跳转到展现层展示报表。

以上核心部分就是如何给报表设置内建数据集,也是本文要介绍的内容,主要以测试代码形式说明:

importcom.raqsoft.report.model.ReportDefine;

importcom.raqsoft.report.usermodel.BuiltinDataSetConfig;

import com.raqsoft.report.util.ReportUtils;

import com.runqian.report4.usermodel.Types;

public class ReadReport {

       publicstatic void main(String[] args) {

              StringreportFile =“D:/raqsoft_v5_0215/report5/web/webapps/demo/WEB-INF/reportFiles/wwww.rpx”;

              try{

                     // 读入原始报表文件

                     ReportDefinerd = (ReportDefine)ReportUtils.read(reportFile);

                     //new 内建数据集类

                     BuiltinDataSetConfigbds = new BuiltinDataSetConfig();

                     // 设置数据集名称

                     bds.setName(“dsneijian”);

                     // 定义内建数据集字段名称

                     String[] colNames = {“fff1”,“fff2”};

                     // 定义内建数据机字段类型

                     byte[] colTypes ={Types.DT_STRING,Types.DT_INT};

                     // 设置内建数据集字段名称

                     bds.setColNames(colNames);

                     // 设置内建数据机字段类型

                     bds.setColTypes(colTypes);

                     // 定义并设置内建数据集数据列表

                     String[][] valuess ={{“aaaa”,“1”},{“bbbb”,“2”},{“cccc”,“3”}};

                     bds.setValues(valuess);

                     // 为报表数据集列表增加新  内建数据集

                     rd.getDataSetMetaData().addDataSetConfig(bds);

                     // 输出保存修改后的报表

                     ReportUtils.write(“D:/raqsoft_v5_0215/report5/web/webapps/demo/WEB-INF/reportFiles/neijianbi.rpx”,rd);

              }catch (Exception e) {

                     e.printStackTrace();

              }

       }

}

注:报表设计器内增加内建数据集包括:增加字段、设置字段类型、添加数据。 因此 api 也是涉及对应的三个方法,由上面代码(内建数据集类:BuiltinDataSetConfig)可知:setColNames()/setColTypes() 及 setValues()