学习ING

ireport的使用

一、iReport介绍

说到iReport不得不先介绍Jasperreport,Jasperreport是一个报表制作程序,用户需要按照它制定的规则编写一个XML文件,然后得到用户需要输出的格式文件。它支持输出的文件格式包括PDF,HTML,XML,XLS,CVS等等。而iReport就是一个制作Jasperreport的XML文件的可视化开发工具。





回页首


二、模板制板

首先必须下载一个iRport(地址:http://ireport.sourceforge.net/),现在的最高版是0.4.0,我们这里使用的是0.2.2。

将iReport解压缩以后编辑目录下的iReport.bat文件即可,如下

@echo off
            set JAVA_HOME=C:\j2sdk1.4.0_03
            set ANT_HOME=C:\ant
            set IREPORT_HOME=C:\Documenti\progetti\iReport\iReport2\
            rem %ANT_HOME%\bin\ant javadocs
            %ANT_HOME%\bin\ant iReport
            

只要设置相应的一些路经就可以,这里是采用ant来运行,当然如果你没有安装ant也不想安装它,那么也可以,找到noAnt文件夹下的startup.bat文件即可运行。

建立新模板时,便得到如图所示的界面。



选中菜单项"Datatsource",单击其子菜单项"Connection/Datasources",便会弹出一个编辑框,选择"New"按钮,



输入数据源名称,选择JDBC Driver,在输入JDBC URL时,可以点击"Wizard"按钮,它会根据你选的JDBC Driver配置好你的URL,不过得修改IP地址以及DatabaseName,输入数据库名、用户名、密码。点击"Test"按钮,确定连接情况,然后保存。

下图是我做好的一个报表模板:



$F{}是用来标明这是数据库字段。$F{WINDOWS_NAME}、$F{NUMBER}、$F{vname}、$F{SP_NAME}和$F{SP_TYPE}是数据库里的字段,也是我要在模板里用到的字段。对于$F{NUMBER}、$F{vname}、$F{SP_NAME}和$F{SP_TYPE}这四个字段,虽然放在其他域也可以显示出结果,比如:pageHeader域、columnHeader域、columnFooter域等等,但是因为会有多列的数据要显示,所以必须放到"detail"域中。

模板画完了,现在来配置模板的查询语句,以及字段、变量和参数。

首先输入查询语句,如"select * from v_baseinfo_statbanjiereport",点击"Read fields"按钮,会查询出该表的所有字段名



如果您要有条件的查询,那么就在后面添加Where语句,如"select * from v_baseinfo_statbanjiereport where DEPT_NAME=$P{orgname} and END_SP_DAY=$P{etime}",点击"Save query to report"按钮保存。

这里要提醒大家注意的是,您可以直接把参数写入Where语句中,象这样"where DEPT_NAME='中国' and END_SP_DAY='2004-11-23'";但是从java程序或者jsp页面传过来的参数是中文字符的话,您就必须做编码转换或者用英文字符、数字来代替;还有像日期参数"2004-11-23",jasperreports好象解析不了,如果你把SQL语句改成" select * from v_baseinfo_statbanjiereport where DEPT_NAME='$P{orgname}' and END_SP_DAY='$P{etime}'",那么又会抛出异常,因为Jasperreport会先把SQL语句设置成预编译语句"select * from v_baseinfo_statbanjiereport where DEPT_NAME=?and END_SP_DAY=?",所以SQL语句中用到参数的时候,除了其特定的"$P{}"符号外,不能有别的标点符号,传进去的参数值也尽量不要带标点符号,所以日期格式得改成"20041123"。

设置模板字段:



设置模板参数:



当这些全部做完后,点击"Save"按钮,就会生成一个XML文件,再点击"Compile"按钮,就会生成一个后缀名为jasper的文件。

现在可以预览一下模板的效果,先选择菜单项"Build"的子菜单项"PDF preview"、"HTML preview"、"JAVA 2D preview"、"Excel preview"、"CSV preview"和"JRViewer preview"中的一项(对这些项显示工具的配置在菜单项Tools\Options..下的External programs), 再点击"Execute report";如果你想带数据预览,还得先激活一下刚配置的数据源,选中菜单栏"Build"下的子菜单栏"Set active connection",会弹出一编辑框,选中一个数据源名称,点击"OK"。

此时我们就要引入一个jsp页面,假设是pdf.jsp,那么下面就是pdf.jsp的代码:

<%@ page import="dori.jasper.engine.*" %>
            <%@ page import="java.util.*" %>
            <%@ page import="java.io.*" %>
            <%@ page import="java.sql.*" %>
            <%
            File reportFile = new File(application.getRealPath("/reports/ribanjietongji.jasper"));
            
            Map parameters = new HashMap();
            parameters.put("orgname", "zhongguo");
            parameters.put("etime", "20041123");
            Connection conn=null
            //以下忽略得到数据库连接过程
            //……
            byte[] bytes =
            JasperRunManager.runReportToPdf(
            reportFile.getPath(),
            parameters,
            conn
            );
            response.setContentType("application/pdf");
            response.setContentLength(bytes.length);
            ServletOutputStream ouputStream = response.getOutputStream();
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
            %>
            

程序里面要和大家说明的就是,"/reports/test.jasper"这个路径是相对于你这个jsp页面的,比如你的jsp页面保存在D:\\..\ROOT\目录下,那么你就必须在这个目录下建一个report目录,然后把你做好的报表模板文件放到该目录下来。

		Map parameters = new HashMap();
            parameters.put("orgname", "zhongguo");
            parameters.put("etime", "20041123");
            

"orgname"和"etime"必须和模板时定义的参数名称一致。

posted @ 2008-10-08 10:05  祝雄锋  阅读(28325)  评论(0编辑  收藏  举报