最新历史版本 :程序数据源 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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();

2. 索引编辑