`

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

阅读更多

很多报表工具都自带大量的函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,报表工具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
分享到:
评论

相关推荐

    给FastReport增加一个自定义函数

    在FastReport中添加自定义函数是一项常见的需求,它允许用户扩展报表引擎的功能,以满足特定的业务逻辑。FastReport是一款强大的报表设计工具,广泛应用于Windows应用程序中,支持多种编程语言,如Delphi和C++...

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

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

    vba自定义函数大全

    2. **报表生成**:根据业务需求创建自定义函数,可以自动化生成各种报表,减少手动操作。 3. **界面交互**:自定义函数可以与用户界面元素(如按钮、文本框)交互,响应用户的操作。 4. **错误处理**:编写自定义...

    java报表API源代码(程序数据集、自定义函数和导出API)

    Java报表API源代码主要涵盖了FineReport工具的程序数据集、自定义函数和导出API的实现,旨在帮助开发者深入了解报表工具的内部工作原理,掌握二次开发技能,以应对各种个性化的业务需求。FineReport是一款强大的Java...

    通过groovy自定义函数实现提取明细表字段至主表字段.rar

    通过观看"通过groovy自定义函数实现提取明细表字段至主表字段.mp4"视频教程,我们可以深入学习如何在实际环境中应用这些知识点,逐步构建并优化这个功能。学习和掌握Groovy自定义函数的使用,不仅可以提升工作效率,...

    VBA_Excel自定义函数大全

    本文将详细介绍一系列常用的VBA自定义函数及其应用方法,帮助用户更高效地完成数据分析任务。 #### 二、自定义函数详解 1. **函数作用:返回Column英文字** - **说明**:此函数用于返回Excel中列的英文名称,...

    VBA-自定义函数大全

    VBA 自定义函数大全是一组功能强大且实用的函数集合,涵盖了多个领域的应用,包括字符串处理、日期计算、财务计算、汉字处理等。下面是对每个函数的详细说明: 1. 函数作用:返回 Column 英文字 该函数可以将Excel...

    excel中161个VBA_自定义函数(超级实用)

    ### Excel VBA自定义函数详解 #### 1. 返回Column英文字 此函数用于返回Excel工作表中的列字母,例如A、B、C等。在处理大量数据时,特别是需要引用特定列的数据时,该函数提供了便利性。 #### 2. 查询某一值第num...

    了解Excel中的自定义函数。___下载.zip

    4. 自动化操作:结合VBA,自定义函数可以触发一系列操作,如自动更新报表、发送邮件等。 四、自定义函数的优化和调试 为了提高自定义函数的性能,可以考虑以下几点: 1. 函数参数:合理设计参数,减少不必要的数据...

    金蝶EAS增加自定义取数公式范例.pdf

    金蝶EAS是一款针对大型企业级应用的全面企业管理软件,其强大的自定义功能为企业提供了灵活的数据处理和报表生成能力。在“金蝶EAS增加自定义取数公式范例”中,我们关注的核心知识点是如何利用EAS BOS v5.9版本及...

    pb 自定义报表源码

    8. **自定义函数库**:为了复用代码,开发者可能创建了自定义函数库,用于处理报表中的通用任务,比如日期处理、字符串操作等。 这个压缩包中的"×Ô¶¨Ò屨±í"和"自定义报表"文件可能就是实现了上述功能的...

    C#完全自定义报表源码

    C#中的Linq和自定义函数可以用来实现这些操作。 3. **报表模型**:这是报表结构的定义,包含了报表的布局、样式、字段等信息。开发人员可能需要创建自定义类或使用XML来定义报表模型。 4. **报表渲染**:根据报表...

    自定义报表使用技巧自定义报表使用技巧总结

    本文主要探讨了自定义报表的使用技巧,包括SQL的基本使用、视图的应用以及自定义报表的制作方法,并提供了实战案例和一些实用的经验总结。 首先,SQL是自定义报表的基础,掌握其基本语法至关重要。例如,`SELECT * ...

    VBA_自定义函数

    ### VBA自定义函数知识点详解 #### 1. 函数作用:返回Column英文字9 - **函数描述**:此函数用于返回Excel列标对应的英文字符。例如,第1列为"A",第2列为"B",以此类推。 - **应用场景**:常用于构建动态的列引用...

    UReport2是一款高性能的Java报表引擎提供完善的基于网页的报表设计器可快速做出各种复杂的中式报表

    UReport2具有良好的扩展性,支持自定义函数和组件,用户可以根据项目需求进行定制开发。同时,它能够无缝集成到各种Java应用框架中,如Spring、Struts等,使得报表功能可以方便地融入到现有的业务系统中。 ### 6. ...

    Excel-VBA宏编程实例源代码-自定义函数-按小时计酬.zip

    总的来说,通过学习和应用VBA宏编程,特别是创建自定义函数,你可以充分利用Excel的功能,解决各种实际问题,如自动化报表生成、数据处理、数据分析等。而这个"按小时计酬"的实例就是一个很好的起点,可以帮助你更好...

    Excel-VBA宏编程实例源代码-自定义函数-计算固定资产折旧.zip

    在这个"Excel-VBA宏编程实例源代码-自定义函数-计算固定资产折旧.zip"压缩包中,包含了一个具体的实例,即如何使用VBA编写自定义函数来计算固定资产的折旧值。 固定资产折旧是企业财务会计中的一个重要概念,用于...

    最全最新的润乾报表函数文档.doc

    润乾报表还允许用户自定义函数,通过编写JavaScript代码实现个性化的数据处理。这种方式极大地扩展了润乾报表的功能,可以根据实际业务需求定制计算规则。 四、报表设计技巧 1. 数据集:润乾报表支持多数据集,...

    Excel函数应用500例

    13. **VBA宏**:通过编写Visual Basic for Applications代码,可以实现自定义函数和自动化操作,进一步提升效率。 这些只是Excel函数应用中的冰山一角,实际的500例中还包括了更复杂的数组公式、逻辑函数、文本处理...

    Excel-VBA宏编程实例源代码-自定义函数-提取商品名称中汉字.zip

    在这个“Excel-VBA宏编程实例源代码-自定义函数-提取商品名称中汉字.zip”压缩包中,包含了一个具体的应用示例,即如何通过VBA宏来编写自定义函数,专门用于从商品名称中提取出汉字部分。这个功能对于处理大量含有中...

Global site tag (gtag.js) - Google Analytics