在某些应用场景中,需要在程序中对数据进行处理后再作为报表的数据源使用,以下例子即为一个简单的不带参程序数据集ArrayTableData的使用过程,并以此简要说明程序数据集的使用方法。
1. 定义程序数据源
由之前的概述可知,程序数据集需要实现TableData接口,可以直接继承该接口,实现其5个方法,也可以从AbstractTableData扩展,因为AbstractTableData已经实现了默认的hasRow(int rowIndex)方法。
该例中的程序数据集ArrayTableData就是直接从AbstractTableData扩展的,完整代码如下:
package com.demo;
import com.fr.data.AbstractTableData;
public class ArrayTableDataDemo extends AbstractTableData {
//定义程序数据集的列名与数据保存位置
private String[] columnNames;
private Object[][] rowData;
//实现构建函数,在构建函数中准备数据
public ArrayTableDataDemo(){
String[] columnNames ={"Name","Score"};
Object[][] datas = {{"Alex",new Integer(15)},{"Helly",new Integer(22)},{"Bobby",new Integer(99)}};
this.columnNames = columnNames;
this.rowData = datas;
}
//实现TableData的其他四个方法,因为AbstractTableData已经实现了hasRow方法
public int getColumnCount(){
return columnNames.length;
}
public String getColumnName(int columnIndex){
return columnNames[columnIndex];
}
public int getRowCount(){
return rowData.length;
}
public Object getValueAt(int rowIndex, int columnIndex){
return rowData[rowIndex][columnIndex];
}
}
1.把上面代码复制到txt文档重命名为ArrayTableDataDemo.java。放到C:\FineReport6.5\WebReport\WEB-INF\classes\com\demo这个目录下
2.打开开始cmd—cd—输入C:\FineReport6.5\WebReport\WEB-INF\classes enter 然后 javac –classpath ../lib/fr-server-6.5.jar com/demo/ArrayTableDataDemo.java enter 就OK了.
编译ArrayTableData.java生成ArrayTableData.class类。将生成的类文件拷贝到报表工程/WEB-INF/classes目录下。由于该类是在com.demo包中的,因此最终应该将该ArrayTableData.class放在/WEB-INF/classes/com/demo下面。此时该程序数据源便定义好了。
2. 配置程序数据源
新建报表
在报表数据集中新建程序数据源,选择我们定义好的程序数据集,如下图
名字可以自定义,如student
3. 使用程序数据集
配置好程序数据源后便可以使用定义的student程序数据集了,与其他类型的数据集使用方法是相同的,可以通过拖拽方法实现单元格数据列绑定。如下图
文章转自:http://blog.vsharing.com/fanfanzheng/A1368702.html