1. 概述
FineReport 报表的数据来源可以是数据库数据、文本数据,并且还可以是其它类型的数据。
FineReport 主要通过 AbstractTableData 抽象类来读取数据源,上述所有的数据来源都继承 AbstractTableData 类实现抽象方法,因此用户只要实现了 AbstractTableData 抽象类,FineReport 报表引擎就能够读取用户自定义的数据源。
FineReport 支持程序数据集,用户自定义程序数据源后,可在数据集处添加「程序」数据集使用。如下图所示:
具体可参考简单示例:简单程序数据集
10.0.16 之前的版本,AbstractTableData 抽象类有 4 个方法;10.0.16 及之后的版本,进一步封装取数,只需要实现 2个方法即可。具体内容如下:
1)10.0.16 之前的版本
获取 AbstractTableData 的总列数:
public int getColumnCount();
获取 AbstractTableData 中第 columnIndex 列的列名:
public String getColumnName(int columnIndex);
获取 AbstractTableData 的总行数:
public int getRowCount();
获取 AbstractTableData 中第 columnIndex 列,第 rowIndex 行的数据,在某些应用场景中,需要在程序中对数据进行处理后再作为报表的数据源使用。
public Object getValueAt(int rowIndex, int columnIndex);
2)10.0.16 及之后的版本
初始化列名数组:
/**
* 初始化列名数组
*
* @return {col1,col2,col3...}
* @throws TableDataException
*/
public abstract String[] initColumnNames();
加载数据:
/**
* 加载数据
*
* @return 行列数据
*/
public abstract List<Object[]> loadData();