一、环境介绍:
iReport使用的是3.7.6版的
Window7 旗舰版系统
JDK1.7
使用javabean作为数据源
二、iReport工具的使用
1、将WEB-INF/classes(本地tomcat的编译路径)目录添加到工具-选项-classPath下
2、配置参数Parameters作为数据源使用,参数类指定到相应的bean类
3、刚刚开始的时候可能找不到相应的类,重启一下软件或者系统就可以了.
2、这个是刚刚创建的模板,本地文件是.jrxml文件,编译后是.jasper文件(二进制文件)
我主要用的就是detail band条和title band 条
3、然后就可以使用窗口-组件面板了
三、问题
1、遇到的第一个问题是子字表的问题
刚开始对子报表一直不理解,后来在项目组大神的教导下慢慢的理解,现在说说创建子报表的流程
1).先创建一个.jrxml文件作为字报表
2).组件面板中有一个Subreport工具,拖出来,会出现下图,选择已存在的reort文件,浏览找到刚刚创建的.jrxml文件
使用一个空数据源,然后下一步,下一步,即可
在子报表的属行中找到上图,进行数据源配置
new net.sf.jasperreports.engine.data.JRBeanArrayDataSource(从刚刚配置的paramter中取相应的类)
4)在子报表中找到
从刚刚写的数据源类中读取相应的属性,添加后自动显示在Fields列表中
4).使用哪个属性,从列表中拖出来就可以了!
2、主报表中,和子报表在同一行的竖线可以和子报表同是变长
属性中有这个,可以让竖线和band条的高度关联起来,如果字报表下面还有内容,并且还在同一个band中,可能会被覆盖,所以建议新建一个detail,或者写在下一个band里。
四、Demo
File pdfFile=test.createPdf("D:\\iReport\\test.pdf");
JasperReport report=(JasperReport)JRLoader.loadObject("D:\\iReport\\ZMPersonalAccidentHarmInsurance.jasper");//模板加载
String absolutePath_par = TemplateStorage.TemplateParentPath;//项目的默认路径
@SuppressWarnings("rawtypes")
Map parmer=new HashMap();
parmer.put("dataset", dataset);//dataset是javabean
parmer.put("SUBREPORT_DIR",absolutePath_par);
OutputStream out=new FileOutputStream(pdfFile);
JasperPrint print=JasperFillManager.fillReport(report, parmer,new JREmptyDataSource());
//pdf文件输出
JRPdfExporter exporter=new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport();