报表开发之自定义函数x.docx

上传人:l**** 文档编号:62341677 上传时间:2022-11-22 格式:DOCX 页数:6 大小:12.85KB
返回 下载 相关 举报
报表开发之自定义函数x.docx_第1页
第1页 / 共6页
报表开发之自定义函数x.docx_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《报表开发之自定义函数x.docx》由会员分享,可在线阅读,更多相关《报表开发之自定义函数x.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、报表开发之自定义函数x报表开发之自定义函数 对于报表开发,许多状况下,自带的函数就能满意大部分用户的报表制作需求,FineReport 也不例外。但是在一些特别领域能须要一些特别的函数,在这种状况下,FineReport 供应了自定义函数机制,可以由用户依据业务须要自己来定义一些函数,但这些函数必需满意函数定义规则。先来了解一下 FineReport 的函数定义规则:Functionname(Para,Para,.),其中Functionname 为函数名,Para 为参数。每一个函数都被定义成一个类,这个类必需要实现 Function 这个接口,在运算的时候首先通过函数名反射取得这个类,然后

2、调用它的 run(Object agrs)方法。下面以 SUM 这个函数为例。SUM 函数原理 函数原理 由程序可以看到,SUM 类用来运算 SUM 函数,他继承了 AbstractFunction 类,而AbstractFunction 实现了 Function 这个接口。当函数运算的时候,先依据函数名取得运算该函数的类,如 SUM(2,4,true)这个函数先依据函数名取得 SUM 这个类,然后调用 SUM 类的 run(Object args)方法,args 中存放的是 SUM 函数的参数,运算的时候可以从 args 中取得参数进行运算。如执行结果为 SUM(2,4,true)=2+4+

3、1=7。SUM 函数所运用代码:函数所运用代码:package com.fr.report.script;import java.lang.reflect.Array;import com.fr.report.script.core.FArray;import com.fr.report.script.core.FunctionHelper;public class SUM extends AbstractFunction public Object run(Object args) double result = 0;for (int i = 0; i < args.length; i

4、+) if (argsi = null) continue;result += parseObject(argsi);return FunctionHelper.parsePrimitiveDouble(result);private double parseObject(Object obj) if (obj instanceof Number) return (Number) obj).doubleValue(); else if (obj instanceof Boolean) return (Boolean) obj).booleanValue() ? 1 : 0; else if (

5、obj instanceof FArray) FArray array = (FArray) obj;double sum = 0;for (int i = 0; i < array.length(); i+) sum += parseObject(array.elementAt(i);return sum; else if (obj != null) try return Double.parseDouble(obj.toString(); catch (NumberFormatException exp) return 0;return 0;实现步骤 编写自定义函数 编写自定义函数

6、下面以一个简洁的自定义函数例子来说明运用自定义函数。我们定义一个函数StringCat,他的作用是把全部的参数以字符串的形式连接起来。StringCat 函数运用规则为 StringCat(Para,Para,Para.); 其中 Para 为该函数的参数,个数不限。由概述可知 AbstractFunction 实现了 Function 这个接口,因此 StringCat 可以干脆继承 AbstractFunction 类,完整代码如下:package com.fr.function; import com.fr.script.AbstractFunction; public class St

7、ringCat extends AbstractFunction public Object run(Object args) String result = ;Object para;for (int i = 0; i < args.length; i+) para = argsi;result += para.toString();return result;这里要留意,运用函数 StringCat(Para,Para,Para.)时,依据函数名取得运算该函数的类 StringCat,并将参数传入类中的 args 对象数组中,执行该类的 run 函数。而在 run 函数中即实现了将传

8、入的参数以字符串的形式连接起来。并返回最终形成的字符串。编译自定义函数 编译自定义函数 将编译后的 StringCat.class 放到 FineReport 的安装书目 WEB-INF 下面的 classes书目下,因为 StringCat.java 属于包 com.fr.function,所以 StringCat.class 须要放到 classescomfrfunction 书目下。注册自定义函数 注册自定义函数 生成该函数的类后须要在设计器中进行注册,才可以运用该函数。打开服务器|函数管理器,选择刚刚定义好了 StringCat 类,如下图 函数名称可以自定义,如这边定义为 StringCat; 同时可以添加该函数的运用说明,如上图所示的描述 运用自定义函数 运用自定义函数 注册好自定义函数后,制作报表时便可干脆运用了,运用方法与内置的函数是相同的。新建报表,定义两个报表参数 para1、para2,类型分别为字符串型与整形,默认值分别为空字符串与 0在空白报表的随意单元格里写入公式:=StringCat($para1,$para2)(留意:写入公式的时候在参数名前加$,表明这是运用的参数)点击分页预览在参数控件中,写入参数值如 para1 为:FineReport,para2 为:123。点击查询可以看到结果 说明 StringCat 公式可以正常运用啦。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁