文档章节

如何基于报表工具FineReport进行二次开发

 春天来了吗
发布于 2016/11/11 16:23
字数 1441
阅读 90
收藏 1

随着FineReport的发展,它提供的设计器和服务器应该能够满足绝大部分的需求,完全实现零编码的软件开发、革命性地加快软件的开发以及提高软件的稳定性。但是需求千变万化,而FineReport本身所具备的功能是报表中比较典型的,一些比较有个性的功能无法实现,那么就需要应用开发人间使用网页脚本、API接口等进行深入的开发,而这一点,FineReport报表工具是支持的,那么如何来实现插件开发呢?

Ant打包

Ant是一个构建工具,它可以帮助我们将项目开发过程中需要完成的各种步骤组织起来,通过一个简易的方式来构建整个项目。其中一些比较典型的任务就是编译Java源代码、运行java程序、拷贝文件或目录、将编译完成的类打包等等。具体的使用方法如下:

1、下载安装Ant

到官网上下载最新的Ant,这里下载的是apache-ant-1.9.7-bin.zip

下载完成后进行解压,这里解压到D:\apache-ant

2、配置环境变量

新建环境变量:ANT_HOME:D:\apache-ant

 

在环境变量PATH的最后面添加一下内容:

;%ANT_HOME%\bin注意前面的分号,如果PATH最后没有分号“;”的话要加上,有的话就可去除

 

进入cmd命令窗口,在CMD窗口中输入ant -version,敲击回车键,会显示出安装的ANT版本,说明配置成功了

 

3、简单Ant编译

首先在D:\plugins-Git盘下建立一个build.xml文件,内容如下:

<?xmlversion="1.0"?> 

<projectname="helloWorld"> 

       <targetname="sayHelloWorld"> 

              <echomessage="Hello,Amigo"/> 

       </target> 

</project>

进入xml文件路径,运行antsayHelloWorld,如下:

 

4、进行插件打包

l  将源码下载到本地

 

l  新增FineReport的jar包,将下图的6个jar包拷贝到lib/report文件夹下

 

l  打开bulid.xml文件,根据实际安装的jdk位置修改jdk路径

 

l  打开插件,在插件工程目录下执行ant-fbuild.xml jar

 

将打包好的文件夹打包成.zip文件,这样这个插件就打包完成,可以在设计器上安装了

 

l  安装插件

安装完成后,如下图:

 

安装完成后,可以在公式编辑器中的【函数类型】下看到插件函数了,插件函数里有一些常用的函数如下图:

 

插件开发实例

1、自定义导出插件

默认的报表工具栏中只能设置Excel导出、Word导出以及PDF导出,如下图所示。如果想导出CSV、TXT等文件就比较麻烦,只能利用自定义按钮来实现。

 

在FineReport V8.0中提供了工具栏按钮的接口,可以通过此接口来开发插件,实现各种工具栏按钮的功能

l  关键接口

// 国际化文件引入接口  

 

com.fr.stable.fun.LocaleFinder   

 

// web端工具栏按钮扩展接口  

 

com.fr.report.fun.ExtensionButtonProvider   

 

// 导出处理扩展接口  

 

com.fr.report.fun.ExportOperateProvider  

 

// 设计器中工具栏设置中工具栏按钮扩展接口  

 

com.fr.design.fun.ToolbarItemProvider

l  插件工程结构

 

l  实现过程

实现关键的几个接口。主要类如下所示对于的piugin.xml中的部分配置

com.fr.plugin.export.csv.core.CsvExport 

 

com.fr.plugin.export.csv.core.CsvExtensionButton

 

com.fr.plugin.export.csv.ui.CsvExportToolbarUI   

 

com.fr.plugin.export.csv.CsvLocaleFinder

l  打包插件

在插件目录执行下面的命令,或者直接点击build.bat批处理文件(注意修改JDK路径)

ant -f build.xml jar

安装插件后,在web属性配置界面就可以添加csv导出按钮了,

 

这个时候在浏览器上预览报表,就可以看到菜单栏上的csv导出按钮,点击就会把当前的报表导出成为csv文件。

2、自定义函数插件开发

在使用FineReport的自定义函数的时候,我们可以通过编译class之后通过函数管理器添加自定义函数,但是这样有如下三个缺点:

1)维护麻烦,每次更新韩式,都需要找到class文件所在的目录之后用新的class文件替换掉

2)自定义函数缺少该函数的使用说明,不知道的人无法正确的使用该函数,提高了沟通成本

3)传播不方便,在一台机器上使用的自定义函数,如果在另外一台机器上也要使用,需要找到需要拷贝的class文件和function.xml文件

为了解决这三个问题,报表工具FineReport中提供了函数定义的接口,可以通过插件来添加自定义函数,具体开发过程如下:

l  关键接口和xml属性

com.fr.stable.fun.FunctionDefineProvider

l  接口属性

配置属性值

描述

class

自定义函数类别

name

函数名

description

函数使用描述

l  使用方法

<FunctionDefineProvider class="com.fr.plugin.function.MyFunction" name="my" description="函数的描述"/>

l  Piugin.xml内容HTML/XML代码

<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin>

    <id>com.fr.plugin.function.collection</id>

    <name><![CDATA[自定义函数集合]]></name>

    <active>yes</active>

    <version>1.1</version>

    <env-version>8.0</env-version>

    <jartime>2015-09-10</jartime>

    <vendor>author</vendor>

    <description><![CDATA[自定义函数插件]]></description>

    <change-notes><![CDATA[无]]></change-notes>

    <extra-core>

        <FunctionDefineProvider class="com.fr.plugin.function.MyFunction" name="my" description="拼接两个参数。调用方式:=my(C4, C5)"/>

       <FunctionDefineProviderclass="com.fr.plugin.function.YourFunction" name="you"description="我的函数"/>     </extra-core> </plugin>

l  实现内容(拼接两个字符串)

importcom.fr.general.GeneralUtils;

import com.fr.script.AbstractFunction;

import com.fr.stable.ArrayUtils;

import com.fr.stable.Primitive;

 

public class MyFunction extendsAbstractFunction {

   @Override

   public Object run(Object[] args) {

        if (ArrayUtils.getLength(args) < 2) {

           return Primitive.ERROR_VALUE;

       }

       return GeneralUtils.objectToString(args[0]) +GeneralUtils.objectToString(args[1]);

    }

}

l  插件打包和安装

在插件工程目录下执行

ant -f build.xml jar

安装好插件后,会获取到插件安装包,通过设计器安装该插件后,可以在公式编辑器中的“插件函数”项下看到插件函数了

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 8
码字总数 10481
作品 0
南京
电信业务支撑报表开发工具解决方案

电信业务支撑报表开发工具解决方案 电信现状 现今中国电信为了运营方便,采用了多套系统进行日常运营支撑,但是在运营中面临了如下两点难处: 1:不及时。新业务比如说政企招财宝开通时,由于...

Sherlynn
2015/04/28
0
0
tomcat部署FineReport成功,访问reportlets下的自带模板cpt文件提示数据集配置错误

FineReport是一款数据展示(报表)、数据查询(参数)和数据录入(填报)功能集于一身,用来辅助开发基于BS软件系统的工具,能够革命性地加快软件开发速度,提高软件稳定性。他本质上还是一个servl...

两天三顿
2017/04/12
0
0
数据可视化案例 | 如何打造数据中心APP产品

意识到数据探索带来的无尽信息,越来越多的企业开始建立自有的数据分析平台,打造数据化产品,实现数据可视化。 在零售商超行业,沃尔玛“啤酒与尿布”的故事已不再是传奇。无论是大数据还是...

九月你好123
2016/11/07
8
0
Web报表工具FineReport中JavaScript的使用

报表软件FineReport采用的是jQuery v1.9.2框架,jQuery是一个快速的,简洁的JavaScript库,能让用户更方便地处理HTML documents、events,实现动画效果,方便地为网站提供AJAX交互,并且它兼...

九月你好123
2016/03/11
249
0
FineReport报表工具协力铁四院管理系统

日前,FineReport报表工具成功应用于铁道第四勘察设计院人力资源管理系统,为铁四院的信息化建设作出重要贡献。在此次应用合作中,铁四院对FineReport报表的优异表现赞誉有加,充分肯定了Fin...

Sherlynn
2015/04/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
8
3
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
4
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
2
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部