一。 下载ireport( 官方网站:http://ireport.sourceforge.net),本人下载ireport3.7.0。
二。 搭建ireport+jasperreports java开发平台。将ireport3.7.0安装路径下
D:\iReport-3.7.0 \ireport\modules\ext下的(jasperreports-3.7.jar,
iText- 2.1.0.jar,iTextAsian.jar,commons-logging-1.1.jar,commons-collections-3.2.1.jar,
commons- digester-1.7.jar,poi-3.2-FINAL-20081019.jar,groovy-all-1.5.5.jar)的jar包加入到
java classPath下。其中各jar包的版本以你下载的ireport的\ireport\modules\ext路径下jar为准。
各jar包作用如下:
jasperreports-3.7.jar:该包的作用完成ireport中Preview按扭功能。通过该包可以通过java来ireport生成摸班
(.jrxml或.jasper)填充数据源并导出pdf,excel,html等格式文件。
iText-2.1.0.jar:生成pdf所依赖的包。
iTextAsian.jar:支持pdf中文字体依赖的包。
groovy-all-1.5.5.jar:将.jrxml编译成.jasper.如果你不使用java编译,而使用ireport工具编译则无须导入该 包。
commons-digester-1.7.jar:解析.jrxml
poi-3.2-FINAL-20081019.jar:生成excel报表所依赖的jar
三。使用javaBean数据源开发子报表例子如下:
第一步:创建主报表javaBean(货物)如下(set,get方法省列):
public class DailySales implements Serializable {
private static final long serialVersionUID = 1L;
private String productNo;//货物代号
private String productName;//货物名称
private int number;
private int money;//货物价格
private int id;//货物唯一标识
private List<DailyZoom> dailyZooms;//货物销售地区(子报表)
public DailySales(String productNo, String productName, int number, int money,
List<DailyZoom> dailyZooms) {
this.productNo = productNo;
this.productName = productName;
this.number = number;
this.money = money;
this.dailyZooms = dailyZooms;
}
}
第二步:创建子报表报表javaBean(货物销售地区)如下(set,get方法省列):
public class DailyZoom implements Serializable {
private String name;
private BigDecimal amounts;
public DailyZoom(String name, BigDecimal amounts) {
this.name = name;
this.amounts = amounts;
}
}
注意:如果在报表中需要排序则上述类必须实现Comparable接口,并实现其方法。
第三步:创建DailySalesFactory工厂类提供集合数据源如下:
public class DailySalesFactory {
private static DailySales[] data = { new DailySales(" 货号 1", " 物品1 ", 1, 1000, getDailyZoom()),
new DailySales(" 货号 2", " 物品 2", 2, 2000, getDailyZoom()),
new DailySales(" 货号 3", " 物品 3", 3, 3000, getDailyZoom()),
new DailySales(" 货号 4", " 物品 4", 4, 4000, getDailyZoom()),
new DailySales(" 货号 5", " 物品 5", 5, 5000, getDailyZoom()),
new DailySales(" 货号 6", " 物品 6", 6, 6000, getDailyZoom()),
new DailySales(" 货号 7", " 物品 7", 7, 7000, getDailyZoom()),
new DailySales(" 货号 8", " 物品 8", 8, 8000, getDailyZoom()),
new DailySales(" 货号 9", " 物品 9", 9, 9000, getDailyZoom()),
new DailySales(" 货号 10", " 物品 10", 10, 10000, getDailyZoom()) };
public static Object[] getBeanArray() {
return data;
}
public static Collection getBeanCollection() {
return Arrays.asList(data);
}
public static List getDailyZoom() {
List<DailyZoom> dailyZooms = new ArrayList();
dailyZooms.add(new DailyZoom("厦门", new BigDecimal(123.00)));
dailyZooms.add(new DailyZoom("南昌", new BigDecimal(456.00)));
return dailyZooms;
}
}
将上述创建的类设置到ireport3.7.0的classPath目录下(工具》选项》classPath),然后配置javaBean数据源如下:

第四步:设定ireport模版如下:

注意:(1)pdf中文设定:首先将iTextAsian.jar設置到classPath下.然後fonts path下勾選iTextAsian.jar路徑和jasperreports-extensions-3.5.3.jar路徑,最後将会显示中文的文本Pdf Font name is now deprecated:STSong-Light,pdfExcoding:UniGB-UCS2-V (Chinese Simplified)(V是从上往下显示,H是从左往右显示)。
(2)上下和左右表格要对其,否则生成的excel会很乱。
(3)Parameters,Fields,Variables区别:Parameters是保存从java外部传进来的参数,Fields是Sql或javaBean数据查询返回的字段,Variables是ireport计算或保存值的。
(4)分页:强行分页可直接使用Break控件,程序控制分页(让它每显示20条就自动分页)在该print when expression里面写表达式,如下:new Boolean($V{total}.intValue() % 20 == 0) total是数据总量
(5)分組統計的報表.每一分組一頁(在ireport中***group foot1勾選start on a new page).
第五步:使用数据源开发子报表如下:
注意:(1)Subreport Expression中$P{SUBREPORT_DIR} + "javaBeanReport_subreport1.jasper"中为子报表编译后文件的路径,其中$P{SUBREPORT_DIR} 是从java中传进子报表路径。
(2)Data Source Expression:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{dailyZooms})是使用主报表List集合构造子报表JavaBean数据源。
第五步:从java中加载ireport做好的模板生成报表如下:
将集合转换成javaBeanDataSource:
JRBeanCollectionDataSource javaBeanDataSource = new JRBeanCollectionDataSource(results);
将jrxml编译成jasper:
JasperReport jasperReport = JasperCompileManager.compileReport("c:/javaBeanReport.jrxml");
生成JasperPrint对象:
JasperPrint jasperPrint = JasperFillManager.fillReport
(jasperReport,parameters, javaBeanDataSource);parameters为要传如的参数Map对象
生成pdf流对象:JasperExportManager.exportReportToPdfStream(jasperPrint, stream);
调用ireport中JasperViewer查看pdf
JasperViewer jrview = new JasperViewer(jasperPrint);
jrview.setPreferredSize(new Dimension(200, 100));
jrview.setVisible(true);
生成excel代码如下:
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, streamExcel);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.exportReport();
子报表需注意的java代码:
Map parameters = new HashMap();
parameters.put("SUBREPORT_DIR", "C:/Documents and Settings/user/桌面/");
如果有子报表必须从java端将SUBREPORT_DIR参数传给ireport
大量数据内存处理(磁盘建立目录来优化内存):
JRFileVirtualizer对象如JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, "tmp");
然后数据填充时传一个参数即可如:
Map parameters = new HashMap();
parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
第六步:显示效果如下:
四:与与struts2.0整合(导入struts2-jasperreports-plugin-2.0.12.jar包)
<packagename="default"namespace="/reports"extends="struts-default,jasperreports-
default">
<actionname="demoReport"class="com.xy.report.action.DemoAction">
<resultname="success"type="jasper">
<paramname="location">/reports/demoReport.jasper</param>
<paramname="dataSource">list</param>
<paramname="format">PDF</param>
<paramname="reportParameters">map</param>
</result>
</action>
</package>
</struts>
location - 提供利用iReport制作编译好的报表文件。
dataSource - 数据源
format - 报表输出格式
reportParameters - 报表参数
五:常见的异常:
(1)spring+jasperReport生成PDF格式的报表时报
java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfWriter.setRgbTransparencyBlending(Z)V异常
原因:iText.jar文件过旧,将之改为2.1版就没事了。
(2)java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException异常
原因:没有导入 groovy-all.jar 包,导入 groovy-all.jar 包就可以了。
(3)Excle 应用:
java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFCellStyle
出现上述错误提示加入 poi-3.2-FINAL-20081019.jar
(4)net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : STSong-Light
pdfEncoding : UniGB-UCS2-H
isPdfEmbedded : false
出现上述错误提示加入
iTextAsian.jar
(5)java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
出现上述错误提示加入 commons-digester-1.7.jar iReport/lib 功能简述:解析 xml 文件;
(6)java.lang.NoClassDefFoundError: org/apache/commons/collections/ArrayStack 出现上述错误提示加入
commons-beanutils-1.7.jar iReport/lib
(7)java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap 出现上述错误提示加入
commons-collections-2.1.jar iReport/lib
(8)
异常:Found two components for namespace
http://jasperreports.sourceforge.net/jasperreports/components 解决方法.查看是否在工程目录添加了外部jar [jasperreports-X.X.X.jar],[jasperreports-X.X.X-javaflow.jar]<XXX为版本号>
如果有同时添加了这两个jar.移除[jasperreports-3.5.3-javaflow.jar] 则可.
六.ireport其他資料

- 大小: 28 KB

- 大小: 64.9 KB

- 大小: 23.4 KB

- 大小: 45.4 KB

- 大小: 14.6 KB
分享到:
相关推荐
1. **安装与配置**:详细讲解如何下载、安装和配置iReport和JasperReports库,以及如何设置相关的开发环境,如Java SDK和数据库连接。 2. **报表设计基础**:介绍报表的基本元素,如文本字段、表格、图表、子报表等...
总结起来,iReport和JasperReports为Java开发者提供了一套全面的报表解决方案,从设计到生成,再到展示,都提供了强大的工具和支持。通过熟练掌握这两个工具,开发者可以创建出满足业务需求的高质量报表,有效地支持...
**iReport与JasperReports介绍** 1. **iReport**:这是一个基于Java的报表设计工具,它允许开发者通过直观的用户界面创建、编辑和管理JasperReports报表模板。iReport支持多种数据源,包括数据库、CSV、XML等,并...
iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。 iReport的遵循AGPL自由开源协议,在SourceForge.net开源社区发布 [1] 。 根据iReport和Jasper Studio的维护公告,自iReport版本...
总结来说,`ireport`配合`jasperreports`和Groovy,为Java开发者提供了一套强大的报表设计和生成解决方案。通过`ireport`的图形化界面设计报表,结合`jasperreports`的丰富功能和Groovy的动态脚本,可以轻松地创建出...
在本教程中,我们将学习如何在一个简单的Spring MVC Web应用中集成Jasper报表工具。教程涵盖的技术点有:报表自定义数据源的使用;报表渲染、呈现的配置与实现;iReport报表设计器的使用(报表模板设计)等
当iReport与JasperReports结合使用时,开发者可以先在iReport中设计报表模板,然后在Java应用中调用JasperReports库来生成报表。以下是一般的开发流程: 1. **设计报表**:在iReport中,通过选择各种组件并设置样式...
iReport和JasperReports是两个在Java开发领域中广泛使用的报表工具,主要用于设计和生成复杂的业务报告。这个“iReport+Jasperreports中文教程集合”提供了丰富的学习资源,旨在帮助初学者快速掌握这两个工具的使用...
首先,IReport是一款基于Java的报表设计工具,它可以与JasperReports库紧密结合,提供可视化的报表设计界面。用户可以通过拖拽字段、设置样式和排版,轻松创建自定义的报表模板。IReport支持多种数据源,包括数据库...
JasperReports 和 iReport 是两款在Java开发中广泛使用的报表工具,主要用于创建和生成复杂的报表。这两款工具的主要功能和特点如下: 1. **JasperReports**: - JasperReports 是一个强大的报表生成组件,它允许...
总的来说,iReport和JasperReports结合使用,提供了一个强大的报表开发平台,不仅能满足日常的报表需求,也能处理复杂的业务分析报表。通过这个教程,你可以掌握从基础到进阶的报表设计技能,提升你的Java应用中的...
总之,iReport与JasperReports是Java开发环境中不可或缺的报表工具,它们的组合使用为企业带来了高效、灵活的报表解决方案。无论你是初学者还是经验丰富的开发者,都值得深入了解并熟练掌握这两个工具,提升你的项目...
首先,iReport是Jaspersoft公司开发的一个开源报表设计器,它允许用户使用拖放界面来创建和编辑JasperReports报表。iReport支持多种数据源,包括数据库、CSV文件、XML文件等,可以设计各种类型的报表,如表格、图表...
在这个"chapter_8_src.zip_Java 8_ireport_jasperReports"的压缩包中,我们聚焦的是Java 8与报表工具IReport和JasperReports的结合使用。IReport是一款开源的报表设计工具,而JasperReports则是一个强大的Java报表库...