`

关于报表自定义函数的应用

阅读更多

很多报表工具都自带大量的函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,报表工具FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定义一些函数,满足用户的自定义需求。但这些函数必须FineReport函数定义规则。以下以两个实际案例来仔细详解。

应用一:生成UPC条形码

FineReport中自带有EAN型编码,但却没有UPC条形码,但是可以通过自定义函数引用第三方包来生成UPC编码的条形码并显示出来。如输入数值12345678912,将会得到以下UPC条形码:

 

具体步骤怎么实现?

1、 编写自定义函数

  • 导入第三方包 

在eclipse中导入第三方包barcode4j-light.jar,可在帆软论坛上下载),barcode4j是一款开源的条形码生成库,能够生成很多种编码的条形码,包括UPC码。自定义函数中可以直接调用该包中现成的方法来生成UPC条形码。

  • 自定义函数类

新建一个类Upc,完整代码如下:

package com.fr.function;

import java.awt.image.BufferedImage;
import org.krysalis.barcode4j.impl.upcean.UPCABean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.tools.UnitConv;
import com.fr.script.AbstractFunction;

public class Upc extends AbstractFunction {
	public Object run(Object[] args) {
		if (args == null || args.length < 1) {
			return "参数不对,必须有一个参数";
		}
		try {
			// 创建一个UPC编码生成器
			UPCABean bean = new UPCABean();
			// 设置条形码高度,BufferedImage.TYPE_BYTE_BINARY代表常量值12,可直接使用常量值
			final int dpi = Integer.parseInt(args[1].toString());
			bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi));
			bean.doQuietZone(false);
			BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi,
					BufferedImage.TYPE_BYTE_BINARY, false, 0);
			// 创建条形码
			bean.generateBarcode(canvas,args[0].toString());
			canvas.finish();
			// 返回图片显示   
			return canvas.getBufferedImage();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return args[0];
	}
} 

 

 

2、 编译自定义函数

编译Upc.java生成Upc.class文件,拷贝至报表环境目/WebReport/WEB-INF/classes/com/fr/function下;

将第三方包barcode4j-light.jar放在报表环境目录/WebReport/WEB-INF/lib文件夹下。

3、 注册自定义函数

启动设计器,点击服务器|函数管理器,新增函数取名为Upc,选择Upc.class类,如下图:

4、 Upc()函数的使用

重启服务器,在报表中使用公式==Upc(num1, num2),num1为需要生成条形码的数值,num2为生成的图片的高度。

如在单元格中输入公式:=Upc(12345678912,100),预览便可以看到条形码了。

应用二:Unicode编码转化为中文

数据库中保存的是如下形式的编码:%u5357%u4EAC-%u57CE%u5317,希望最好展示出来的是对应的中文“南京-城北”。

具体步骤如下:

1、 编写自定义函数

package com.fr.function;  

import com.fr.script.AbstractFunction;  
  
public class Ubm extends AbstractFunction {  
    public Object run(Object[] args) {  
        String str = args[0].toString();  
        String st = "";  
        StringBuffer buffer = new StringBuffer();  
        while (str.length() > 0) {  
            if (str.startsWith("%u")) {  
                st = str.substring(2, 6);  
                char ch = (char) Integer.parseInt(String.valueOf(st), 16);  
                buffer.append(new Character(ch).toString());  
                str = str.substring(6);  
            } else {  
                st = str.substring(0, str.indexOf("%u"));  
                buffer.append(st);  
                str = str.substring(st.length());  
            }  
        }  
        return buffer.toString();  
    }  
}

2、 编译自定义函数

将编译后的Ubm.class放到FineReport的安装目录WEB-INF下面的classes目录下,因为Ubm.java属于包com.fr.function,所以Ubm.class需要放到classes\com\fr\function目录下。

3、 注册自定义函数

生成该函数的类后需要在设计器中进行注册,才可以使用该函数。打开服务器|函数管理器选择刚刚定义好了Ubm类,如下图

 4、 使用自定义函数

注册号自定义函数后,制作报表时便可直接使用了,使用方法与内置的函数是相同的。输入公式=Ubm("%u5357%u4EAC-%u57CE%u5317")运行如下:

展示值为“南京-城北”。

 

0
0
分享到:
评论

相关推荐

    关于报表工具FineReport的自定义函数的应用

    很多报表工具都自带大量的函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,报表工具FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定义...

    力控V7.1 V7.2 自定义报表和变量重定向测试范例20190907OK.rar

    自定义报表工艺:两个任意历史时刻产量、生产效率统计、计算、任意位置、格式显示在Excel上、可打印或保存查询的报表!数据库用的是Access.依此为模版,可方便的自行制作年月日自定义产能报表!数据采集采用定时周期...

    利用GDI 函数构造图形报表

    需要以报表和图形的形式对数据进行统计分析,由于手头没有相关的开发组件,于是自己利用GDI 函数进行底层的图形绘制,配合中间层的数据统计及组合,表层嵌入HTML文件中,形成了一整套生成饼状图、柱状图和折线图的...

    配置FineReport报表服务器

    配置FineReport服务器之前,首先确保机器上已经安装了Tomcat, Resin,Weblogic,Websphere等应用服务器之一; 在FineReport的安装软件中内置了一个jetty服务器,也可以启动它来浏览报表。

    用友华表Cell插件5.3.9.15安装版

    是国内技术领先拥有广泛客户群的商业报表组件,有700多个编程接口,实现报表自定义,报表显示、打印预览、打印,图表,公式,自定义函数、资源本地化等强大功能,能够完全读写Excel文件。是软件开发人员开发优秀报表...

    华报智能报表工具

    华报智能报表工具(ReportAll)是开发人员最... 支持自定义函数,需要调用自定义函数时,系统产生事件,通过捕捉事件可以实现自定义函数。 界面个性化 设计报表文档时,支持配色方案的设计。 支持菜单的隐藏和显示。

    Delta SCADA DIAView 组态软件 快速入门开发教程(6)

    历史趋势:通过历史曲线工具操作和自定义函数查询操作,来监控水位历史变化的趋势走向; 报警查询:针对报警框(历史报警查询)控件对水位报警查询的操作; 报表查询:针对报表进行自定义查询和相关基本函数的应用...

    VB报表设计源代码

    自定义函数,变量使用,数据库取数在vb中的应用,另附连续打印,单元格条件颜色,保护公式等等应用

    VB.rar_report designer_sourcecell() VB_vb report designer_vb 报表

    VB报表设计源代码,此源码包是Cell组件VB中的一些应用代码示例,包括自定义函数、变量应用、从数据库取数,另附连续打印、单元格条件颜色

    AC Report 中国式报表控件(Ver 2.61)

    5. 可扩充性,可以在应用程序中给报表引擎扩充函数库、报表样式和单元格样式。 6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。 7. 支持多栏式报表。 8. 和应用程序完美结合,支持windows下所有...

    ACReport中国式报表控件2011(Ver2.3)

    5. 可扩充性,可以在应用程序中给报表引擎扩充函数库、报表样式和单元格样式。 6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。 7. 支持多栏式报表。 8. 和应用程序完美结合,支持windows下所有的开发...

    c# winform间传递参数的方法

    C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢? 下面举例说明如何实现这一功能. 1.新建一个项目. ...4.在该窗体的构造函数中对该变量进行赋值,并为该窗体类添加属性GetStrValue.

    《Delphi 深度编程及其项目应用开发》PDF书及代码

    基础篇结合示例论述了Delphi的深度编程技术,其中包括9章,分别为:理解Windows消息、进程与线程、自定义组件的编写、文件操作、创建DLL应用程序、两层数据库应用程序、多层数据库应用程序、Socket编程、串口编程;...

    PowerBuilder8.0实用教程

    本书详细论述了PowerBuilder 8.0版的组成以及它们的语言、事件和函数,对构成PowerBuilder的各种对象(应用、窗口、菜单、数据窗口、数据库、事件、函数、用户对象)以及它们的用途、创建、使用和修改方法等内容做了...

    ACReport中国式报表控件2011(Ver 2.50)

    5. 可扩充性,可以在应用程序中给报表引擎扩充函数库、报表样式和单元格样式。 6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。 7. 支持多栏式报表。 8. 和应用程序完美结合,支持windows下所有的...

    html2canvas 截图功能 报表和文档转换

    6. **回调函数**:提供回调函数来处理转换过程中的事件。 使用 `html2canvas` 的一些常见场景包括: 1. **截图功能**:为网站或应用提供截图功能。 2. **报表和文档转换**:将 HTML 格式的报表或文档转换为图像。 3...

    Excel在财务管理中的应用.iso (随书光盘)

    6.7 财务管理常用函数的应用 183 6.7.1 折旧计算函数 183 6.7.2 货币时间价值的计算函数 191 6.7.3 投资决策中有关指标的计算 193 6.8 练习与提高 195 第7章 财务表格的打印设置 7.1 页面布局设置 197 7.1.1 打印...

    北京中科信软Excel2007培训

    第一节、常用条件统计函数的应用 通配符在条件统计函数中的应用 Sumifs、Countifs、Average复杂条件统计 Round函数 第二节、逻辑函数 If条件函数的嵌套应用 And、Or函数与If的组合应用 第三节、查找引用函数的使用 ...

    FastReport问题集

    Q: 我怎样添加我的自定义函数? A: 使用 TfrReport.OnUserFunction 事件. 这里有一个简单的例子: procedure TForm1.frReport1UserFunction(const Name: String; p1, p2, p3: Variant; var val: Variant); begin if ...

    Visual Basic开发经验技巧宝典

    分别是开发环境、语言基础、程序算法、数组与指针、函数和过程、字符及字符...函数、注册表、Windows应用、应用程序控制、数据库技术、SQL查询相关技术、打印与报表技术、图表技术、网络开发技术、Web编程、安全技术、...

Global site tag (gtag.js) - Google Analytics