很多报表工具都自带大量的函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,报表工具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")运行如下:
相关推荐
在FastReport中添加自定义函数是一项常见的需求,它允许用户扩展报表引擎的功能,以满足特定的业务逻辑。FastReport是一款强大的报表设计工具,广泛应用于Windows应用程序中,支持多种编程语言,如Delphi和C++...
很多报表工具都自带大量的函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,报表工具FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定义...
2. **报表生成**:根据业务需求创建自定义函数,可以自动化生成各种报表,减少手动操作。 3. **界面交互**:自定义函数可以与用户界面元素(如按钮、文本框)交互,响应用户的操作。 4. **错误处理**:编写自定义...
通过观看"通过groovy自定义函数实现提取明细表字段至主表字段.mp4"视频教程,我们可以深入学习如何在实际环境中应用这些知识点,逐步构建并优化这个功能。学习和掌握Groovy自定义函数的使用,不仅可以提升工作效率,...
Java报表API源代码主要涵盖了FineReport工具的程序数据集、自定义函数和导出API的实现,旨在帮助开发者深入了解报表工具的内部工作原理,掌握二次开发技能,以应对各种个性化的业务需求。FineReport是一款强大的Java...
本文将详细介绍一系列常用的VBA自定义函数及其应用方法,帮助用户更高效地完成数据分析任务。 #### 二、自定义函数详解 1. **函数作用:返回Column英文字** - **说明**:此函数用于返回Excel中列的英文名称,...
VBA 自定义函数大全是一组功能强大且实用的函数集合,涵盖了多个领域的应用,包括字符串处理、日期计算、财务计算、汉字处理等。下面是对每个函数的详细说明: 1. 函数作用:返回 Column 英文字 该函数可以将Excel...
4. 自动化操作:结合VBA,自定义函数可以触发一系列操作,如自动更新报表、发送邮件等。 四、自定义函数的优化和调试 为了提高自定义函数的性能,可以考虑以下几点: 1. 函数参数:合理设计参数,减少不必要的数据...
金蝶EAS是一款针对大型企业级应用的全面企业管理软件,其强大的自定义功能为企业提供了灵活的数据处理和报表生成能力。在“金蝶EAS增加自定义取数公式范例”中,我们关注的核心知识点是如何利用EAS BOS v5.9版本及...
8. **自定义函数库**:为了复用代码,开发者可能创建了自定义函数库,用于处理报表中的通用任务,比如日期处理、字符串操作等。 这个压缩包中的"×Ô¶¨Ò屨±í"和"自定义报表"文件可能就是实现了上述功能的...
C#中的Linq和自定义函数可以用来实现这些操作。 3. **报表模型**:这是报表结构的定义,包含了报表的布局、样式、字段等信息。开发人员可能需要创建自定义类或使用XML来定义报表模型。 4. **报表渲染**:根据报表...
本文主要探讨了自定义报表的使用技巧,包括SQL的基本使用、视图的应用以及自定义报表的制作方法,并提供了实战案例和一些实用的经验总结。 首先,SQL是自定义报表的基础,掌握其基本语法至关重要。例如,`SELECT * ...
### VBA自定义函数知识点详解 #### 1. 函数作用:返回Column英文字9 - **函数描述**:此函数用于返回Excel列标对应的英文字符。例如,第1列为"A",第2列为"B",以此类推。 - **应用场景**:常用于构建动态的列引用...
UReport2具有良好的扩展性,支持自定义函数和组件,用户可以根据项目需求进行定制开发。同时,它能够无缝集成到各种Java应用框架中,如Spring、Struts等,使得报表功能可以方便地融入到现有的业务系统中。 ### 6. ...
总的来说,通过学习和应用VBA宏编程,特别是创建自定义函数,你可以充分利用Excel的功能,解决各种实际问题,如自动化报表生成、数据处理、数据分析等。而这个"按小时计酬"的实例就是一个很好的起点,可以帮助你更好...
在这个"Excel-VBA宏编程实例源代码-自定义函数-计算固定资产折旧.zip"压缩包中,包含了一个具体的实例,即如何使用VBA编写自定义函数来计算固定资产的折旧值。 固定资产折旧是企业财务会计中的一个重要概念,用于...
润乾报表还允许用户自定义函数,通过编写JavaScript代码实现个性化的数据处理。这种方式极大地扩展了润乾报表的功能,可以根据实际业务需求定制计算规则。 四、报表设计技巧 1. 数据集:润乾报表支持多数据集,...
13. **VBA宏**:通过编写Visual Basic for Applications代码,可以实现自定义函数和自动化操作,进一步提升效率。 这些只是Excel函数应用中的冰山一角,实际的500例中还包括了更复杂的数组公式、逻辑函数、文本处理...
在这个“Excel-VBA宏编程实例源代码-自定义函数-提取商品名称中汉字.zip”压缩包中,包含了一个具体的应用示例,即如何通过VBA宏来编写自定义函数,专门用于从商品名称中提取出汉字部分。这个功能对于处理大量含有中...