报表引擎API开发入门—简单程序数据集
小编最近接的项目是有关报表开发的,很想把这部分知识分享出来。希望大家能够支持我!不多说,马上进入我们今天的话题。
API基本知识
小编最近项目所做的是关于一个报表软件—FineReport报表开发的一些事,也许有人接触过,知识相通,我今天就把我做的分享出来。
FineReport设计器与服务器不可能满足所有的需求,某些个性化需求可能无法实现。我们可以深入的开发与控制API接口。想要了解我们内核结构及api的使用,首先我们必须掌握一些基本的概念,下图就是我们内核的最基本图示。
图是网上找的,有点不清楚,大家放大看哈。
由于每个部分各自包含了很多属性,比如可以设置单元格的前景、背景、边框、字体、字号等;又比如每个WorkSheet中可以添加,删除单元格、可以设置每个sheet的页面属性、可以给每个sheet中添加图表悬浮元素等;再比如可以对WorkBook进行执行获得结果并导出成各种格式、可以进行打印、添加工具栏等等。下图为FineReport所有开放的API,我们今后都会用到。
简单程序数据集
FineReport设计器本身已经提供了数据库数据源、文本数据源、xml数据源等多种数据来源方式,同时程序员还可以通过java程序自行生成数据来源,只需要实现TableData接口便可以了。
1. 问题描述
FineReport报表的数据来源可以是数据库数据或是文本数据,并且还可以是其它任何类型的数据,因为FineReport是通过AbstractTableData抽象类来读取数据源的,而上述所有的数据来源都继承实现其抽象方法,因此只要实现了AbstractTableData抽象类,也就可以用自定义类型的数据源了(程序数据集),FineReport报表引擎就能够读取定义的数据源作为报表数据源使用。
2.实现原理
AbstractTableData抽象类主要有5个方法,如下:
1.获取AbstractTableData的总列数
publicintgetColumnCount();
2.获取AbstractTableData中第columnIndex列的列名
public String getColumnName(int columnIndex);
3.判断是否存在第rowIndex行,这主要是用于处理超大数据时,完全遍历所有数据获取总行数相当困难,用这个方法来判断第rowIndex行是否存在,存在则可读取
publicbooleanhasRow(int rowIndex);
4.获取AbstractTableData的总行数
publicintgetRowCount();
5.获取AbstractTableData中第columnIndex列,第rowIndex行的数据
public Object getValueAt(int rowIndex, int columnIndex);
在某些应用场景中,需要在程序中对数据进行处理后再作为报表的数据源使用。
3.示例
下面我们定义数据集为如下样式:列为Name,Score,值分别为Alex,15;Helly,22;Bobby,99作为程序数据集。
3.1定义程序数据源
定义一个类,继承AbstractTableData,并实现里面的方法,具体的代码如下:
publicclassArrayTableDataDemoextendsAbstractTableData{
// 定义程序数据集的列名与数据保存位置
private
String[] columnNames;
private
Object[][] rowData;
// 实现构建函数,在构建函数中准备数据
publicArrayTableDataDemo()
{
String[] columnNames = {
"Name",
"Score"};
Object[][] datas = { {
"Alex",
newInteger(
15) },
{
"Helly",
newInteger(
22) }, {
"Bobby",
newInteger(
99) } };
this
.columnNames = columnNames;
this
.rowData = datas;
}
// 实现ArrayTableData的其他四个方法,因为AbstractTableData已经实现了hasRow方法
publicintgetColumnCount()
{
return
columnNames.length;
}
public String getColumnName(int columnIndex)
{
return
columnNames[columnIndex];
}
publicintgetRowCount()
{
return
rowData.length;
}
public Object getValueAt(int rowIndex, int columnIndex)
{
return
rowData[rowIndex][columnIndex];
}
}
将ArrayTableDataDemo.java编译生成ArrayTableDataDemo.class类。
将生成的类文件拷贝到报表工程/WEB-INF/classes目录下。由于该类是在com. fr.data包中的,因此最终应该将该ArrayTableData.class放在/WEB-INF/classes/com/fr/data下面。此时该程序数据源便定义好了。
3.2配置程序数据源
点击模板数据集下面的加号,选择程序数据集,然后在弹出的程序数据集对话框中,选择对应的class文件,如下图:
3.3使用程序数据集
配置好程序数据源后便可以使用定义的程序数据集了,与其他类型的数据集使用方法是相同的,可以通过拖拽方法实现单元格数据列绑定。如下图:
今天就讲到这啦,是不是很不好懂,小编在做着项目之前没接触过报表开发也是费了一番功夫。大家继续关注哦!
报表引擎API开发入门—简单程序数据集相关推荐
- 报表引擎API开发入门— EJB程序数据源
2019独角兽企业重金招聘Python工程师标准>>> 我们前面讲了几个数据源,今天我们来讲一下EJB数据源,这篇讲完我们数据源这部分就讲完了.数据连接不需要直接访问数据库,而是使用 ...
- 报表引擎API开发入门—带参程序数据集
http://blog.csdn.net/yuanziok/article/details/47998489
- 利用WordPress REST API 开发微信小程序从入门到放弃
自从我发布并开源WordPress版微信小程序以来,很多WordPress网站的站长问有关程序开发的问题,其实在文章:<用微信小程序连接WordPress网站>讲述过一些基本的要点,不过仍 ...
- 驰骋工作流引擎-API开发接口-重要的部分.
驰骋工作流引擎-API开发接口-重要的部分. - 多看文档,少走弯路,学会使用ccbpm的api接口,让您的sdk表模式开发无忧. 登录与门户API 首先要进行代码集成与组织机构的集成 其次在自己的系 ...
- 十三、BIRT报表引擎API及报表API
13.1报表引擎详解,API结构 BIRT包含几个引擎.一个引擎是一个提供一个特定领域的功能的一套Java API.例如,数据引擎包含管理数据的API,图表引擎包含生成一个图表的API.一般而言,BI ...
- 安卓开发入门小程序!一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的?灵魂拷问
开头 1.一定要把基本的数据结构,经典的算法,Unix编程,程序编译链接及计算机原理等基础知识扎牢,这些会长远影响你的职业发展. 2. 推荐从C语言入门,不单是因为很多操作系统.网络协议栈开源代码由C ...
- 利用百度地图天气API开发微信小程序
2020.11.24更新: 更换了天气数据源,增加了小时预报和未来6天预报. 2020.11.19更新: 由于百度的API一直有问题,所以修改了初始进入后的定位方法. 2020.11.05更新: 最近 ...
- php api开发书籍,概述 · ThinkPHP API开发入门 · 看云
[![邀请链接](https://img.kancloud.cn/bd/9e/bd9ee1bb6c29f7cad10b6e069b1907da_728x90.jpg)](https://www.kan ...
- 常用的Java流程引擎API开发调用接口大全-工作流引擎设计
关键词: 工作流引擎 BPM系统 接口调用 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 一.程序调用开发接口 二. 接口说明 所谓的驰骋工作流引擎的接口, ...
最新文章
- strstr函数头文件_C语言(函数)学习之strstr strcasestr
- php 對象轉換成數組,PHP錯誤:陣列對象轉換成關聯數組
- 转]网络上收集的Visual Studio 2008的一些小技巧
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何获取标准驱动器扭矩值获取电流值
- x3m文件怎么转换成mp3_视频中的音频怎么单独提取出来转换成mp3格式
- Python 标准库 urllib2 的使用细节
- 矩阵快速幂 学习笔记
- linux使用触摸屏驱动程序,Linux触摸屏驱动
- Qt介绍---QPA(Qt Platform Abstraction)
- 树莓派上3g模块的使用
- 2019年MongoDB中文社区 长沙大会
- 三星S8 隐藏Android功能键,三星S8获系统更新 新增虚拟按键隐藏功能
- 新研博美反式环辛烯-三乙二醇-氨基,TCO-PEG3-Amine可用于在活化剂(如EDC或DCC)或活化酯(如NHS酯)存在下通过稳定的酰胺键衍生羧基
- Checkout和Rest的所有谜题(git reset --files是要改一下)
- php+扫描条码,PHP条形码图像生成器
- 用阿里云托管服务器怎么托管_云托管就像圣诞老人的4种方式
- 视频教程-OpenGLES(iOS2018版)-其他
- 03-Netty中的Future接口
- Docker构建Mycat
- 数据仓库DM、DW和ODS等概念区分