background image
简单程序数据集
FineReport 设计器本身已经提供了数据库数据源、文本数据源、xml 数据源等多种数据来源
方式,同时程序员还可以通过
java 程序自行生成数据来源,只需要实现 TableData 接口便
可以了。
1. 问题描述
FineReport 报表的数据来源可以是数据库数据或是文本数据,并且还可以是其它任何类型
的数据,因为
FineReport 是通过 AbstractTableData 抽象类来读取数据源的,而上述所有
的数据来源都继承实现其抽象方法,因此只要实现了
AbstractTableData 抽象类,也就可以
用自定义类型的数据源了(程序数据集),
FineReport 报表引擎就能够读取定义的数据源
作为报表数据源使用。
2.实现原理
AbstractTableData 抽象类主要有 5 个方法,如下:
1.获取 AbstractTableData 的总列数
public int
getColumnCount
();
2.获取 AbstractTableData 中第 columnIndex 列的列名
public
String
getColumnName
(
int
columnIndex);
3.判断是否存在第 rowIndex 行,这主要是用于处理超大数据时,完全遍历所有数据获取总
行数相当困难,用这个方法来判断第
rowIndex 行是否存在,存在则可读取
public boolean
hasRow
(
int
rowIndex);
4.获取 AbstractTableData 的总行数
public int
getRowCount
();
5.获取 AbstractTableData 中第 columnIndex 列,第 rowIndex 行的数据
public
Object
getValueAt
(
int
rowIndex,
int
columnIndex);
在某些应用场景中,需要在程序中对数据进行处理后再作为报表的数据源使用。