1. 为什么选择 JasperReports

本文介绍了JasperReports报表工具的选择原因及其特点,详细解释了配套的iReport设计器的功能,并提供了结合使用的步骤,同时列举了JasperReports的支持特性及使用注意事项。

近期项目组需要使用报表,特意写了篇文档,说明一下说什么要使用JasperReports 

1.       为什么选择 JasperReports
基于JAVA的开源的报表工具很多,比如 Eclipse BIRTopenreports等,但JAVA开发者使用最多的工具则是JasperReports。并且国内使用人数也很多。虽然官方不提供免费的使用文档,但网络上相关资源较丰富。

版本升级快,尤其在2008年,上半年和下半年之间版本差别大,兼容性强。功能强大,支持PDFHTMLXLSCSVRTFXML等文件输出格式。

2.       什么是iReport
iReport
是为JasperReports设计的强大的,直观的,易于使用的可视化报表设计器采用纯Java开发。这个工具允许用户可视化编辑包含charts,图片,子报表等的复杂报表。iReport 还集成了JFreeChart图表制作包。允许用户可视化地编辑XML JasperDesign文件。用于打印的数据可以通过多种方式获取包括:JDBC, TableModels, JavaBeans, XML,Hibernate(支持HQL查询语言), CSV等。它支持多种输出格式包括:PDF,RTF,XML,XLS,CSV,HTM等。

3.       JasperReports iReport 如何结合使用
1).   
iReport中设计报表模板,XML格式(jaxml后缀)的文件,编译后生成 jasper 后缀的二进制文件。
2).   
java工程中直接使用经过编译后的jasper文件即可
3).   
填充数据源
4).   
生成制定格式的报表文件
备注:
iReport
软件,可以直接读取的数据源包括jdbchibernatejavabeanxmlcsv等。可以直接填充数据生成不同格式文件。
iReport软件良好的设计界面下测试无问题的模板,可拷贝jasper文件到java工程中使用。
iReport
软件的版本号和JasperReports工具版本号是紧紧对应着的。比如JasperReports 3.0.0,那么对应的iReport须是3.0.0版本才行。
iReport
是向下兼容的。

4.       JasperReports 功能
支持生成PDFHTMLExcelRTFTXTOpenOffice ODF
支持手动编写报表模板
支持编译
支持直接打印
可以和Flash集合在一起
融合了JFreeChart,增强了图表功能
提供了Applet支持
在中文环境下需要特定支持
在不同JAVA环境下都能够应付自如

5.       注意事项
1
.生成PDF中文问题,需要对应的语言包
2
.生成不同格式报表文件,需要调用不同导出器类
3
.在生成HTML格式报表文件时,需要特别注意图片路径
4
.在数据源提供方面,最灵活的就是JavaBean方式,易于控制,并且和现有项目耦合度低,不需要修改什么
5
.不同数据源之间模板文件不通用
6
.设计基于JavaBean数据源方式,需要提前按照规则提供测试数据,并且打成jar

 

PS : 资料引用部分 http://open-open.com/ 描述

net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("list") at com.jaspersoft.studio.editor.preview.view.control.ReportController.fillReport(ReportController.java:553) at com.jaspersoft.studio.editor.preview.view.control.ReportController.access$18(ReportController.java:528) at com.jaspersoft.studio.editor.preview.view.control.ReportController$1.run(ReportController.java:446) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("list") at net.sf.jasperreports.engine.fill.JREvaluator.handleEvaluationException(JREvaluator.java:294) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:328) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:673) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:641) at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:1175) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:529) at net.sf.jasperreports.components.table.fill.FillTableSubreport.evaluateSubreport(FillTableSubreport.java:112) at net.sf.jasperreports.components.table.fill.FillTable.evaluate(FillTable.java:136) at net.sf.jasperreports.engine.fill.JRFillComponentElement.evaluate(JRFillComponentElement.java:110) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:383) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:548) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2613) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:836) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:275) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:119) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:622) at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:135) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassCastException: class net.sf.jasperreports.engine.JREmptyDataSource cannot be cast to class net.sf.jasperreports.engine.data.JsonDataSource (net.sf.jasperreports.engine.JREmptyDataSource and net.sf.jasperreports.engine.data.JsonDataSource are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @14485747) at 骨灰堂工作量统计表_1756975472229_690370.evaluate(骨灰堂工作量统计表_1756975472229_690370:79) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:313) ... 16 more
最新发布
09-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值