iReport跟JasperReport生成报表
1. iReport:
http://ireport.sourceforge.net
2. JasperReport:
http://jasperreports.sourceforge.net
下面是iReport1.1.0+JasperReport1.1.1
IReport-1.1.0的安装.
1. 在iReport的官方网站上下载iReport-1.1.0在本地解压缩.
2. 将Ant文件夹复制到C盘的根目录下面.
3. 在iReport的文件夹下找到iReport.bat,然后进行编辑.
4. 在iReport.bat下面输入下面的内容.
@echo off
set JAVA_HOME=C:\j2sdk1.4.2_05
set ANT_HOME=C:\ant
set IREPORT_HOME=C:\Documenti\progetti\iReport\iReport2\
rem %ANT_HOME%\bin\ant javadocs
%ANT_HOME%\bin\ant iReport
完成之后可以双击iReport.bat文件,运行启动iReport
iReport-1.1.0的安装.(不需要Ant)
1. 编辑iReport.bat文件如下内容即可.
@echo off
set JAVA_HOME=C:\j2sdk1.4.2_05
set PATH=C:\j2sdk1.4.2_05\bin;
set ClASSPATH=C:\j2sdk1.4.2_05\lib\tools.jar
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs
cd bin
startup.bat %CMD_LINE_ARGS%
使用iReport制作报表
双击iReport1.1.0\bin\startup.bat就可以开始使用iReport了。
IReport界面如下:
点击new report 后,如下图:
弹出报表属性对话框,在这个对话框中输入报表属性的名字.选择报表纸张,修改对齐方式,页边距等报表的属性单击ok完成报表属性的设置.如下:
接下来,我们就可以设置报表内容。其中, 设置为静态文本 设置为参数,
**使用变量,参数,字段必须在变量,参数,字段的列表中进行设置.它们的名字必须和报表上的名字相同,数据类型相同.且字段的名字要和你所要填加到报表中的数据的VO的属性名字相同.
当点击 时,为了防止中文乱码问题,需要做如下设置,在Font中,Font Name设置成宋体,PDF Font Name设置成STSong-Light,PDF Encoding要设置成UniGB-UCS2-H (Chinese Simplified),这样才不会出现中文问题。然后在static text中输入正文。
当点击 时,中文问题也同样处理。并且在Text Field中,参数名字要与VO中的一致,当
变成绿色 时,说明正确,存在变量name,否则说明书写错误或者没有添加该变量。
在Library中,添加参数,变量如下:(切记!同VO中变量名字完全一致)
当报表的所有设置结束后,点击[建立][编译]即可保存,每次修改后,如此操作即可。
比如建立了如下的报表,有如下的程序实现。
1. JasperReport与iReport的结合:
在程序中用下面的语句来实现报表数据的加入。
List list = new ArrayList();
for(int i=0;i<10;i++){
UserInfo userInfo = new UserInfo();
userInfo.setUserNO("编号"+i);
userInfo.setUserName("姓名"+i);
userInfo.setUserAge(new Integer(i));
userInfo.setUserSex("男");
list.add(userInfo);
}
Map map = new HashMap();
map.put("company","胜利者");
JRDataSource ds = new JRBeanCollectionDataSource(list);
ServletContext servletContext = this.getServletContext();
File reportFile = new File(servletContext.getRealPath("/WEB-INF/report/reportinfo.jasper")) ;
try {
OutputStream outputStream = response.getOutputStream();
response.setContentType("application/pdf");
JasperPrint jasperPrint = JasperFillManager.fillReport(reportFile.getPath(),map,ds);
JasperExportManager.exportReportToPdfStream(jasperPrint,outputStream);
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use Options | File Templates.
} catch (JRException e) {
e.printStackTrace(); //To change body of catch statement use Options | File Templates.
}