简单程序数据集

1. 问题描述编辑

FineReport报表的数据来源可以是数据库数据或是文本数据,并且还可以是其它任何类型的数据,因为FineReport是通过AbstractTableData抽象类来读取数据源的,而上述所有的数据来源都继承实现其抽象方法,因此用户只要实现了AbstractTableData抽象类,也就可以用自定义类型的数据源了(程序数据集),FineReport报表引擎就能够读取定义的数据源作为报表数据源使用。

2. 实现原理编辑

AbstractTableData抽象类主要有5个方法,如下:
//获取AbstractTableData的总列数
public int getColumnCount();
//获取AbstractTableData中第columnIndex列的列名
public String getColumnName(int columnIndex);
//判断是否存在第rowIndex行,这主要是用于处理超大数据时,完全遍历所有数据获取总行数相当困难,用这个方法来判断第rowIndex行是否存在,存在则可读取
public boolean hasRow(int rowIndex);
//获取AbstractTableData的总行数
public int getRowCount();
//获取AbstractTableData中第columnIndex列,第rowIndex行的数据
public Object getValueAt(int rowIndex, int columnIndex);
在某些应用场景中,需要在程序中对数据进行处理后再作为报表的数据源使用。

3. 示例编辑

下面我们定义数据集为如下样式:列为Name,Score,值分别为Alex,15;Helly,22;Bobby,99作为程序数据集。
3.1 定义程序数据源
定义一个类,继承AbstractTableData,并实现里面的方法,具体的代码如下:
  1. package com.fr.data;  
  2.   
  3. import com.fr.data.AbstractTableData;  
  4.   
  5. public class ArrayTableDataDemo extends AbstractTableData {  
  6.     // 定义程序数据集的列名与数据保存位置  
  7.     private String[] columnNames;  
  8.     private Object[][] rowData;  
  9.     // 实现构建函数,在构建函数中准备数据  
  10.     public ArrayTableDataDemo() {  
  11.         String[] columnNames = { "Name""Score" };  
  12.         Object[][] datas = { { "Alex"new Integer(15) },  
  13.                 { "Helly"new Integer(22) }, { "Bobby"new Integer(99) } };  
  14.         this.columnNames = columnNames;  
  15.         this.rowData = datas;  
  16.     }  
  17.     // 实现ArrayTableData的其他四个方法,因为AbstractTableData已经实现了hasRow方法  
  18.     public int getColumnCount() {  
  19.         return columnNames.length;  
  20.     }  
  21.     public String getColumnName(int columnIndex) {  
  22.         return columnNames[columnIndex];  
  23.     }  
  24.     public int getRowCount() {  
  25.         return rowData.length;  
  26.     }  
  27.     public Object getValueAt(int rowIndex, int columnIndex) {  
  28.         return rowData[rowIndex][columnIndex];  
  29.     }  
  30. }  
将ArrayTableDataDemo.java编译生成 ArrayTableDataDemo.class类。
将生成的类文件拷贝到报表工程 %FR_HOME%\WebReport\WEB-INF\classes目录下。由于该类是在com. fr.data包中的,因此最终应该将该 ArrayTableData.class放在 %FR_HOME%\WebReport\WEB-INF\classes\com\fr\data下面。此时该程序数据源便定义好了。
3.2 配置程序数据源
点击模板数据集下面的加号,选择程序数据集,然后在弹出的程序数据集对话框中,选择对应的class文件,如下图:

222

3.3 使用程序数据集
配置好程序数据源后便可以使用定义的程序数据集了,与其他类型的数据集使用方法是相同的,可以通过拖拽方法实现单元格数据列绑定。如下图:

222
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值