二次开发 >> 引擎API >> 自定义函数>>自定义函数开发过程

楼主
我是社区第59718位番薯,欢迎点我头像关注我哦~
本帖最后由 加菲喵 于 2015-9-10 16:38 编辑

二次开发 >> 引擎API >> 自定义函数>>自定义函数开发过程

1.  问题描述

FineReport已经提供了大量的自带函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定义一些函数。
FineReport函数定义规则:Functionname(Para,Para,...),其中Functionname为函数名,Para为参数。
在FineReport中,每一个函数都被定义成一个类,这个类必须要实现Function这个接口,在运算的时候首先通过函数名反射取得这个类,然后调用它的run(Object[] agrs)方法。下面以num这个函数为例。


2. 实现步骤

2.1 编写函数代码
  1. package com.fr.function;

  2. import com.fr.script.AbstractFunction;

  3. public class stradd extends AbstractFunction {
  4.         public Object run(Object[] args) {
  5.                 String result = "";
  6.                 Object para;
  7.                 for (int i = 0; i < args.length; i++) {
  8.                         para = args[i];
  9.                         result += para.toString();
  10.                 }
  11.                 return result;
  12.         }
  13. }
复制代码
    对于复杂函数,可以在java开发工具(idea,eclipse等)中测试通过后,形成完整java代码

2.2 编译自定义函数
  ① 通过java开发工具(idea,eclipse等)编译成class 文件,此处不做编译赘述
       myeclipse实现java文件编译
                              

       将java文件复制到src目录下
根据提示一步步加载引用直至不报错
  
工程右键  属性 添加jar引用

保存java文件后,工作目录下bin文件夹中会有class文件,即编译成功。



  ② 通过设计器进行编译(此方式要求本地cmd下javac 编译正常不会报错)







       新增一个自定义函数名  stradd

       类名 com.fr.function.stradd

       然后点击编辑,将编写好的代码复制到编辑框中,注意保持格式与系统提示的一致

         

       确认无误后,点击编译,提示编译成功表示编译已成功,

             

       此路径下将生成stradd.class文件

         

     最后点击保存,退出自定义函数编辑界面。

      2.4 使用自定义函数
         注册好自定义函数后,制作报表时便可直接使用了,使用方法与内置的函数是相同的。
          定义两个报表参数p1、p2、p3,类型为字符串型,默认值分别为“FineReport”“8.0” “[完美版本]”
            

        然后在单元格输入如下公式
          =stradd($p1,$p3,$p2)               
           连接是按参数的顺序进行连接的,如果需要额外的链接符,类似下面的写法
           
       预览效果
      




分享扩散:
参与人数 +1 F币 +350 理由
传说哥 + 350 赞一个!

查看全部评分

沙发
发表于 2015-8-28 15:17:14
自定义函数     http://www.finereporthelp.com/help/15/1/4/folder.html

重复了啊
板凳
发表于 2015-8-28 16:58:22
通过设计器编译,不怎么好调试。。。
参与人数 +1 F豆 +50 理由
传说哥 + 50 赞一个!

查看全部评分

地板
发表于 2015-8-30 11:18:04
5楼
发表于 2015-9-6 11:21:04
评分不变哈
6楼
发表于 2022-8-4 11:39:25
能不能给直接编译好的文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表