润乾报表 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"}
};
}