润乾报表 API 自定义数据集之基础内容篇

 

背景说明

报表的数据大部分来自数据库,正常情况下润乾报表都能自动处理,但是也会有特殊情况,例如通过中间键连接数据库而非直连,通过业务程序算出的数据传递给报表进行展现等等,在这种情况下客户需要自定义数据集。

自定义数据集编写

引用相关类包,实现 CustomDataSetFactory 接口,如下图所示:

注意: 要把写好的 MyDataSet.java 编译后的.class 文件放到 java 类路径下,否则找不到这个类,会提示计算数据集失败。

自定义数据集部署

在 服 务 器 中 运 行 使 用 自 定 义 类 的 报 表 文 件 时 应 把 自 定 义 类 编 译 后 的 .class 文 件 放 在 WEB-INF\classes\ 自定义类所在的包名下面。

自定义数据集使用

1. 新建一张空白报表

2. 报表中设置自定义数据集,如下图

3. 编辑单元格表达式

4. 点击预览,浏览效果图

附自定义数据集完整示例代码:


package api; import com.raqsoft.report.dataset.*;  
import com.raqsoft.report.usermodel.*;  
public  class MyDataSet extends  CustomDataSetFactory {  
public DataSet createDataSet(Context ctx, DataSetConfig dsc, boolean retrieve) {  
   //构造一个数据集  
   DataSet ds1 = new DataSet("ds1");  
   String[] filds = dataset[0];  
   for(int i=0; i < filds.length; i ++){  
     ds1.addCol( filds[i] );//设置数据集的字段  
     System.out.println("设置数据集的字段:"+filds[i]);  
   }  
   //设置数据集中的数据  
   for(int i = 1; i < dataset.length; i ++ ){  
     String[] datas = dataset[i];  
     Row rr = ds1.addRow();  
     for(int j = 0; j < datas.length; j ++){  
     rr.setData(j+1,datas[j]);  
     System.out.println("设置数据集的数据第"+i+"行 第"+j+"列的值:"+datas[j]);  
     }  
   }  
     
return ds1;  
}  
  
//定义一个二维数组作为本自定义数据集的来源  
String [][] dataset = {  
{"字段一","字段二","字段二"},  
{"a","b","c"},  
{"d","e","f"},  
{"g","h","k"}  
};  
}