1. 概述
FineReport 设计器与服务器已经能够满足大部分的需求,但某些个性化需求可能无法实现,这时就需要通过二次开发的方式来实现这些需求。
FineReport 开放了一些后台接口供应用开发人员进行深入的开发与控制。想要使用这些接口,首先必须了解 FineReport 内核结构。如下图所示:
Finereport 报表分两个基本面,模板和结果,没有执行过的工作薄或者报表就是模板,而执行过后就是结果。
设计器中新建一个工作薄就是建了一个 WorkBook,WorkBook 相当于一个容器,里面可以放任意个 WorkSheet,就相当于在一个工作薄中创建了多个 sheet。每个 WorkSheet 由任意个单元格 CellElement 组成,因此 CellElement是一个模板的最小元素。如果要对报表中的 CellElement 进行操作,获得 WorkBook 后,必须取得对应的 WorkSheet。
了解了以上内核架构后,就可以通过 API 直接后台修改和设置模板。
如获取到 CellElement 之后,通过 CellElement 的属性设置单元格的前景、背景、边框、字体、字号等;每个 WorkSheet 中可以添加,删除单元格;设置每个 sheet 的页面属性;给每个 sheet 中添加图表悬浮元素等;对 WorkBook 进行执行获得结果并导出成各种格式、可以进行打印、添加工具栏等。
本章提供了一些常用的后台接口和示例,用户可以参考使用,来满足自己对产品的一些开发需求。如下图所示:
注:文档中提供的 FineReport 相关 API 接口,对 FineBI 是不适配的。
2. 索引
2.1 报表数据源
FineReport 设计器本身已经提供了数据库数据源、文本数据源、XML 数据源等多种数据来源方式,同时程序员还可以通过Java 程序自行生成数据来源,只要实现了 AbstractTableData 抽象类,FineReport 报表引擎就能够读取用户自定义的数据源。详细内容可参考:程序数据源
2.2 报表调用
在程序中可以新建一个报表对象,也可以直接读取一个 cpt 模板,新建或读取后,您可以对报表对象的单元格属性、Web 属性、参数、页面设置等多个属性进行控制,可以自由控制单元格的显示样式、工具栏的按钮等。经过处理的报表最终可以导出成多种形式,可以保存为程序网络报表在 Web 端直接访问。详细内容可参考:程序网络报表
2.3 自定义函数
FineReport 提供了大量的自带函数来满足用户的报表制作需求,但是在一些特殊场景,可能需要一些特殊的函数,在这种情况下,FineReport 提供了自定义函数机制,可以由用户根据业务需要自己来定义一些函数。详细内容可参考:自定义函数
2.4 报表导出
FineReport 提供了强大的输入输出功能,所有的这些输入输出的类都在 com.fr.report.io 包里面。用户可以通过编译 Java 程序调用工程资源后台将模板导出成 cpt 、内置数据 cpt 、PDF 、Excel 、Word 、SVG 、CSV 、image (包含 png 、 jpg 、gif 、bmp )等多种文件格式。详细内容可参考:导出API