FineReport报表软件API源代码

上传人:新** 文档编号:479158775 上传时间:2023-11-18 格式:DOCX 页数:19 大小:460.77KB
返回 下载 相关 举报
FineReport报表软件API源代码_第1页
第1页 / 共19页
FineReport报表软件API源代码_第2页
第2页 / 共19页
FineReport报表软件API源代码_第3页
第3页 / 共19页
FineReport报表软件API源代码_第4页
第4页 / 共19页
FineReport报表软件API源代码_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《FineReport报表软件API源代码》由会员分享,可在线阅读,更多相关《FineReport报表软件API源代码(19页珍藏版)》请在金锄头文库上搜索。

1、概述随着FineReport的发展,它提供的设计器和服务器应该能够满足您绝大部分的需求, 完全实现零编码的软件开发,革命性地加快软件开发速度,提高软件稳定性。但是需求是千 变万化的,而FineReport所包含的功能是报表行业中比较普遍的、典型的,也许某些个性 化的功能通过FineReport软件无法实现。因此FineReport开放了能够进行二次开发的接口, 来更好的满足您软件产品或项目中的个性化的需求。您可以根据该引擎API文档学习各类接 口的使用方法,另外若您是一名程序员,且对FineReport报表深感兴趣,希望更深入地了 解FineReport软件的内部原理,您也可以阅读该章节。Fi

2、neReport引擎API文档对如何定义类、编译类文件及JAVA开发平台使用等JAVA基 础知识未作介绍,因此在您查看引擎API文档前请确保您有一定的JAVA基础。目录1. 程序数据源2.1简单程序数据集2.2带参程序数据集2. 自定义函数3.1自定义函数3.2 SubSection函数-Oracle查询参数个数限制3.3自定义函数生产UPC条形码3. 导出api注:另有报表调用的相关代码,如有需要可以另行下载。程序数据集简单程序数据集FineReport报表的数据来源可以是数据库数据或是文本数据,并且还可以是其它任何 类型的数据,因为FineReport是通过TableData接口来读取数据

3、源的,而上述所有的数据 来源都实现了该接口,因此用户只要实现了 TableData接口,也就可以用自定义类型的数 据源了(程序数据集),FineReport报表引擎就能够读取定义的数据源作为报表数据源使 用。TableData接口主要有5个方法,如下:/获取TableData的总列数public int getColumnCount();获取TableData中第columnindex列的列名public String getColumnName(int columnIndex);力判断是否存在第owindex行,这主要是用于处理超大数据时,完全遍历所有数据获 取总行数相当困难,用这个方法来判

4、断第Owindex行是否存在,存在则可读取 public boolean hasRow(int rowIndex);力获取TableData的总行数public int getRowCount();/获取TableData中第columnindex列,第rowindex行的数据public Object getValueAt(int rowindex, int columnindex);使用程序数据集分为如下三个步骤:在某些应用场景中,需要在程序中对数据进行处理后再作为报表的数据源使用,以下例 子即为一个简单的不带参程序数据集ArrayTableData的使用过程,并以此简要说明程序数 据集的

5、使用方法。1. 定义程序数据源由之前的概述可知,程序数据集需要实现TableData接口,可以直接继承该接口,实现其5个方法,也可以从AbstractTableData扩展,因为AbstractTableData已经实现了默认的 hasRow(int rowindex)方法。该例中的程序数据集ArrayTableData就是直接从AbstractTableData扩展的,完整代码如下:package com.fr.data;import com.fr.data.AbstractTableData;public class ArrayTableDataDemo extends AbstractT

6、ableData 定义程序数据集的列名与数据保存位置private String columnNames;private Object rowData;实现构建函数,在构建函数中准备数据public ArrayTableDataDemo()String columnNames =Name”,Score;Object datas = Alex”,new Integer(15),Helly”,newInteger(22),Bobby”,new Integer(99);this.columnNames = columnNames;this.rowData = datas;实现TableData的其他

7、四个方法,因为AbstractTableData已经实现了 hasRow方法public int getColumnCount()return columnNames.length;public String getColumnName(int columnindex)return columnNamescolumnindex;public int getRowCount()return rowData.length;public Object getValueAt(int rowindex, int columnindex)return rowDatarowindexcolumnindex;

8、1.1 把上面代码复制到txt文档重命名为ArrayTableDataDemo.java放到报表环境 /WebReport/WEB-INF/classes/com/fr/data 这个目录下1.2 编译 ArrayTableData.java 生成 ArrayTableData.class 类将生成的类文件拷贝到报表工程/WEB-INF/classes目录下。由于该类是在com. fr.data包中的,因此最终应该将该ArrayTableData.class放在 /WEB-INF/classes/com/fr/data下面。此时该程序数据源便定义好了。2. 配置程序数据源2.1新建报表在报表数

9、据集中新建程序数据源,选择我们定义好的程序数据集,如下图名字可以自定义,如student3. 使用程序数据集配置好程序数据源后便可以使用定义的student程序数据集了,与其他类型的数据集使 用方法是相同的,可以通过拖拽方法实现单元格数据列绑定。如下图带参程序数据集在实际应用中,可能需要根据表名动态地改变数据源,比如在程序数据集中,通过传 进的表名参数,到数据库取出对应的表作为数据源。因为FineReport是通过TableData接 口来读取数据源的,而上述所有的数据来源都实现了该接口,因此用户只要实现了 TableData接口,也就可以用自定义类型的数据源了(程序数据集),FineRepo

10、rt报表引 擎就能够读取定义的数据源作为报表数据源使用。以下就对这种情况举例说明。TableData接口主要有5个方法,如下:/获取TableData的总列数public int getColumnCount();/获取TableData中第columnindex列的列名public String getColumnName(int columnIndex);渊断是否存在第owIndex行,这主要是用于处理超大数据时,完全遍历所有数据获 取总行数相当困难,用这个方法来判断windex行是否存在,存在则可读取 public boolean hasRow(int rowIndex);力获取Tabl

11、eData的总行数public int getRowCount();Z获取 TableData 中第 columnindex 歹U,第 rowindex 行的数据public Object getValueAt(int rowIndex, int columnIndex);使用程序数据集分为如下三个步骤:定义程序数据源配置程序数据源使用程序数据集1. 定义程序数据源首先在构建函数中定义好所用的程序数据集表结构,通过参数获得表名;其次在初始 化函数中准备数据并放入定义的表中;完整代码如下: package com.fr.data;import java.sql.Connection;import

12、 java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import java.util.ArrayList;import java.util.logging.Level;import com.fr.base.FRContext;import com.fr.data.AbstractTableData;import com.fr.report.parameter.Parameter;public class ParamTableDa

13、taDemo extends AbstractTableData /列名数组,保存程序数据集所有列名private String columnNames = null;/定义程序数据集的列数量private int columnNum = 10;/保存查询表的实际列数量private int colNum = 0;/保存查询得到列值private ArrayList valueList = null;/构造函数,定义表结构,该表有10个数据列,列名为column#。,column#1,。 column#9public ParamTableDataDemo() /定义tableName参数thi

14、s.parameters = new Parameter new Parameter(tableName) ;/定义程序数据集列名columnNames = new StringcolumnNum;for (int i = 0; i = colNum) return null;return (Object) valueList.get(rowIndex)columnIndex;/准备数据public void init() /确保只被执行一次if (valueList != null) return;/保存得到的数据库表名String tableName = parameters0.getValue().toString();/构造SQL语句,并打印出来String sql = select * from

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号