cia模拟器怎么用:程序人生

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 07:43:49

iReport_web开发配置向导(转载)

iReport_web开发配置向导

一、iReport简介


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


二、安装说明


 2.1 基本安装
 现在最新的版本是iReport 0.5.1 (Aug 27, 2005).
 下载后解压然后在根目录双击iReport.bat就可以用了,但是为了可以使用external ttf font还必须要把 iReport-0.5.1/fonts 加到环境变量里面去。
 
 2.2 了解制作报表用的包
 下载后到到 iReport-0.5.1/lib 里看看,你就可以发现iReport的真面目了。
 (1)  jasperreports-1.0.1.jar
 jasperreports是iReport的核心内容。它是一个强力的报表产生工具,他有能力描述丰富内容到屏幕上、到打印机或到PDF, HTML, XLS,CSV和XML文件。它完全用Java编写的,并可在各种Java应用(包括J2EE或WEB应用)中用来产生动态内容。它的主要目的是以一种简单而灵活的方式来帮助创建导向的页面。
 JasperReports组织根据在一个XML文件中定义的报表设计通过JDBC来接受来自一个关系数据库中的数据. 为了以数据来填充报表,报表设计必须首先被编译。
 jasperreports的官方网站:http://jasperreports.sourceforge.net/

(2) itext-1.3.1.jar
 iText是一个开放源码的Java类库,是用来生成PDF文件的。
 iText的官方网站:http://itext.sourceforge.net
 如果要在生成的pdf文件显示中文等亚洲字符,还必须下载itext的亚洲字符包。
 tTextAsian的官方下载地址:http://itextdocs.lowagie.com/downloads/iTextAsian.jar
  
(3) jfreechart-1.0.0-rc1.jar
 jfreechart是一款免费的、功能强大的统计图生成工具,可以直接生成PNG,JPG等各式的文件。
 这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
 jfreechart的官方下载地址:http://www.jfree.org/jfreechart/
   
(4) jcommon-1.0.0-rc1.jar
 JCommon是一组有用的classes集合.它已经用在JFreeChart,JFreeReport与其它项目上. 这个类库包含了以下功能:文本工具类(text utilities),用来显示关于应用程序信息的用户界面类,布局定制管理器,一个日期选择面板,序列化工具类,XML解析器支持类.
 jcommon的官方下载地址:http://www.jfree.org/jcommon/

(5) poi-2.0-final-20040126.jar
 Apache的Jakata项目的POI子项目,目标是处理ole2对象。目前比较成熟的是HSSF接口,处理MSExcel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。
 直接调用poi包的不是ireport,而是jasperreport。
 poi的官方下载地址:http://www.apache.org/dyn/closer.cgi/jakarta/poi/
 
 这些是用来制作报表用的包,所以可以用最新的版本来代替原有包。但是务必保持与项目中的包一致,因为很多开源的项目都不向下兼容。(例如jasperreport)
 


三、制作jrxml、jasper


  3.1 选择语言
 Tools->Option->General->Language
 3.2 连接数据库
 资料来源->连结/资料来源
 如果要使用mysql以外的数据库,要保证jdbc包在环境变量里。放到iReport-0.5.1/lib 下也可以。name相当于一个JNDI。添好后点击test按钮如果显示成功就可以执行下一步了。
 3.3 新建一个Report
 定位可以控制报表是横向的还是纵向的。Portrait是纵向,Landscape是横向。
 边距是可以调整的。
 
 3.4 基本域
 title域用来放报表的总标题
 pageHeaher域顾名思义页头
 columnHeader域是用来放static text的,也就是不循环的部分。
 detail域是用来放text field的,也就是循环部分。
 pageFooter域是用来放本页的统计参数的。
 summary域是用来放整个表的统计参数的。
 
 可以直接调整每个域的长度,也可以通过Band properties来调整。当然总长度是不会超过页面的原长。
 
 3.5 报表查询
 3.5.1 为报表添加SQL查询语句
 资料来源->报表查询
 在Report SQL query里填写SQl语句。如果语句正确,在下面的field里就会显示正常的表字段。
 
 3.5.2 为报表添加动态字段
 预览->报表字段
 把fields里的字段直接拖到报表上就行了。
 
 3.5.3 为SQL语句添加参数
 预览->报表参数
 在parameters里新增一个参数
 paratemeter name 是参数名,在SQL语句里写成"$P{参数名}"
 paratemeter class type里选择参数类型。
 注意:如果是int型的数据,最好在报表字段里将该字段的Class type改成java.lang.String型的。
 另外一种办法,不管该字段原来是什么数据类型,直接在paratemeter class type里选择java.lang.String类型,然后在Default value expression 填写"Integer.toString(整数)"。
 
 3.5.4 添加报表变量
 预览->报表变量 $V{变量名}
 
 3.5.5 处理字体
 3.5.5.1 基本设置
 选中字段->右键->properties->font(双击也可以)
 Report font 选择全局的字体(仅限于该报表)
 Font name 选择在ireport里面显示的字体
 Pdf font name 选择在pdf里面显示的字体
 Rotation 选择内容是否旋转(很有用的选项)
 PDF Encoding 中文要用UniGB-UCS2-H,外部字体要选Identity-H
 
 3.5.5.2 选择外部字体
 第一步 先在Pdf font name里选择External TTF font,然后在下面的Ture Type font里选择外部字体,当然要用的外部字体放在iReport-0.5.1/fonts目录下面。
 第二步 在web项目的WEB-INF/classes/下面放要用到的外部字体,才能在程序里正常显示。
 
 3.5.5.3 设定该报表的全局字体
 预览->报表字型
 
  3.6 编译jrxml
 建立->编译
 编译后生成一个后缀名为jasper的binary文件,可以直接给程序调用。
 


四、web项目应用

 4.1 jsp输出PDF报表
 
 4.1.1 需要放到项目里的包
 itext-1.3.1.jar
 iTextAsian.jar
 jasperreports-1.0.1.jar
 
 4.1.2 输出PDF注意事项:
 
 4.1.3 jsp输出PDF的例子
 
 <%@ page import="java.sql.*" %>
 <%@ page import="java.util.*" %>
 <%@ page import="java.io.*" %>
 <%@ page import="net.sf.jasperreports.engine.JasperFillManager" %>
 <%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
 <%@ page import="net.sf.jasperreports.engine.JRException"%>
 <%@ page import="net.sf.jasperreports.engine.JasperRunManager"%>//pdf
 
 <%
  String rowid = "1";//初始化变量
  
  Connection conn= DriverManager.getConnection("proxool.test");//从数据源连接数据库
  
  //装载jasper文件application
  File exe_rpt = new File(application.getRealPath("/reports/test.jasper"));
  
  //rowid就是iReport的变量$P{rowid}的名称
  Map parameters = new HashMap();
  parameters.put("rowid",rowid);
 
  try{
   // fill
   JasperPrint jasperPrint = JasperFillManager.fillReport(exe_rpt.getPath(),parameters,conn);
   
   // 生成pdf
   byte[] bytes = JasperRunManager.runReportToPdf(exe_rpt.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();
   
   conn.close();
   }catch(JRException ex){
   out.print("Jasper Output Error:"+ex.getMessage());
  }

 %>
 
 4.2 jsp输出EXCEL报表
 
 4.2.1 需要放到项目里的包
 jasperreports-1.0.1.jar
 poi-2.0-final-20040126.jar
 
 4.2.2 输出excel要注意的:
 (1) 输出excel报表必须fields的边界刚好填充满整个页面,不然会有大量的空白出现。
 (2) 删除记录最下面的空行需要加上参数
 exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);
 (3) 删除多余的ColumnHeader需要加上参数
 exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);
 (4) 在ireport里给fields加上border,那输出的excel就会有很黑的边框,跟excel默认的灰度边框就会很不协调。但是如果不加border,在输出的excel里就不会显示每个表格的边框。
 解决方法是:
 第一步 在选中字段->右键->properties->Common->Transparent 打上勾。
 第二步 在输出的jsp页面加上参数
 exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);
 
 4.2.3 jsp输出EXCEL的例子
 <%@ page import="java.sql.*" %>
 <%@ page import="java.util.*" %>
 <%@ page import="java.io.*" %>
 <%@ page import="net.sf.jasperreports.engine.JasperFillManager" %>
 <%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
 <%@ page import="net.sf.jasperreports.engine.JRException"%>
 <%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>//excel
 <%@ page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>//excel
 <%@ page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>//excel
 
 <%
  String rowid = "1";
  Connection conn= DriverManager.getConnection("proxool.test");
 
  //装载jasper文件application
  File exe_rpt = new File(application.getRealPath("/excel/test_excel.jasper"));
  
  //rowid就是iReport的变量$P{rowid}的名称
  Map parameters = new HashMap();
  parameters.put("rowid",rowid);
  
  try{
 
   // fill
   JasperPrint jasperPrint = JasperFillManager.fillReport(exe_rpt.getPath(),parameters,conn);
   
   // excel输出
   ByteArrayOutputStream oStream = new ByteArrayOutputStream();
  
    JRXlsExporter exporter = new JRXlsExporter(); 
   
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
    exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); // 删除记录最下面的空行
    exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);// 删除多余的ColumnHeader
    exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);// 显示边框
    exporter.exportReport();
   
   byte[] bytes = oStream.toByteArray();
   
   if(bytes != null && bytes.length > 0) {
    response.reset();
    response.setContentType("application/vnd.ms-excel");
     response.setContentLength(bytes.length);
    ServletOutputStream ouputStream = response.getOutputStream();
    ouputStream.write(bytes,0,bytes.length);
    ouputStream.flush();
    ouputStream.close();
  
   }else{
    out.print("bytes were null!");
   }
   
   conn.close();
   }catch(JRException ex){
   out.print("Jasper Output Error:"+ex.getMessage());
  }
 
 %>
 
  4.3 jsp输出html报表
 没有意义,不写。

五、备注


 5.1 下载地址
 iReport的官方网站:http://ireport.sourceforge.net/
 jasperreports的官方网站:http://jasperreports.sourceforge.net/
 tTextAsian的官方下载地址:http://itextdocs.lowagie.com/downloads/iTextAsian.jar
 jfreechart的官方下载地址:http://www.jfree.org/jfreechart/
 jcommon的官方下载地址:http://www.jfree.org/jcommon/
 poi的官方下载地址:http://www.apache.org/dyn/closer.cgi/jakarta/poi/

- 作者: wudaming 2007年01月20日, 星期六 17:30回复(0)|引用(0)加入博采

关于报表转载
笔者最近做的一个基于J2EE的Web项目,使用IReport与JasperReport作为Web报表的解决方案,在使用Html报表形式进行打印时出现如下问题。
    1.问题描述:使用JasperReport生成Html报表后,数据显示正确,但各种线条显示不出来(若中文显示不出来请参见文章:
iReport与JasperReport中文支持全面解决)。
         产生原因:在生成HTML页面时JRHtmlExporterParameter.IMAGES_URI参数设置不正确,主要是图片的路径问题
         解决办法:生成HTML页面可作如下设置:
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"/Reports/image?image=");
/Report/是图片所在目录,图片的名称为image,没有扩展名,笔记试了好久,设置成其它属性均不凑效,可将IReport生成Html时生成的px文件改名后放入/Reports/目录中。
  2.问题描述:使用JasperReport生成Html报表后,使用IE打印时报表的各种线条无法打印出来
        产生原因:其实,由JasperReport生成Html时,那些线条是一个名称为px像素的图片,是内置在jasperreports包中的,在IE显示时以图片的形式显示,打印时浏览器无法打印这些图片。
解决办法:通过设置IE选项,使其可以打印背景颜色和图像,方法:工具?internet选项?高级?打印?打印背景颜色和图像,重新预览即可显示出各种线条。
  3.问题描述:在使用IReport设计报表模板时,采用标准A4纸,生成Excel及PDF时显示正确,在生成HTML文件时整个报表比原来的尺寸变小好多(数据显示完整) ,所有数据都显示在一个页面上,无法分页。
        解决办法:尚未得到妥善的解决,请高手指教!

- 作者: wudaming 2007年01月20日, 星期六 17:12回复(0)|引用(0)加入博采

ireport和jasperreports

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

2、下载ireport和jasperreports···
jasperreport下载地址:(我下的是jasperreports-0.6.8)http://jasperreports.sourceforge.net
ireport下载地址:(我下的是iReport0.5.0)http://ireport.sourceforge.net

3、下载了ireport将它解压缩以后运行iReport.bat文件,过大约30秒如果能出现ireport的主窗体
则表明你的系统已经可以运行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···
如果你没有安装ant的话也可以找到noAnt文件夹下的startup.bat文件即可运行···

4、数据库···
我是用的mysql数据库,之前配置数据库的JDBC驱动器一直不成功原因是我下的mysql的jdbc驱动太老了,
和ireport的不兼容····
建议到http://dev.mysql.com/downloads/下载最新版本···

5、配置数据库连接····
这个是报表与数据库的接口,通过<资料来源>--<连接/资料来源>开启配置对话框,ireport会记录以前使用的
所有连接,除非你手工删除这些连接,否则连接将一直存在···
配置新连接界面如下:
 
提示:如果你需要报表提供中文内容显示可以在JDBC URL下工夫,比如输入:
jdbc:mysql://localhost/xiaoya?user=root&password=root&useUnicode=true&characterEncoding=GB2312

6、中文问题····
解决pdf中文问题需要下载itextasian.jar和itext-1.3.jar,将其下载后放到ireport/lib下即可··
要在这里提一下的是之前我也下载了这两个东东放到指定的位置了可还是乱码,后来还是解决了··
解决方法:
在iReport中新建一个TextField的时候会自动把pdf字体设为CP1252,这个是需要修改的,
否则pdf输出会报错说找不到字体,我就被这个捆饶了很久,修改如图:

7、理解几个重要的概念····
  a、iReport的输出格式····
    iReport的预览输出格式可以支持以下几种:
    PDF、HTML、CSV、JAVA2D、Excel、纯文字、JRViewer,其中最常用的是PDF、JRViewer。
    本文以JRViewer为例子。JRViewer是直接以C/S方式作为报表的输出格式,在JFrame框架下输出。Jasperreport提供默认的JRViewer输出类。
  b、报表的动态对象变量、参数、字段····
    在使用iReport的过程中会碰到很多与变量(Variables)、参数(Parameters)、字段(Fields)这些有关的内容,我们要介绍这些对象的使用和意义:
   ·字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。
     比如一个ID的所有值。$F{ filedsName }
   ·参数(Parameters):这是你的应用需要提供给报表的入口,
     比如你希望在报表被解释的时候提供Where语句的条件值,
     那么就可以使用参数(Parameters)。$P{ parameterName }
   ·变量(Variables):这是报表中一些逻辑运算的表现,比如统计值。$V{ variablesName }
     每种对象的定义格式如每个对象的后面说明,比如定义一个变量(Variables),
     那么表达式就写成$V{ variablesName },报表中出现的就是这个变量的名称。
   c、编译、静态运行、动态运行···
    Jasperreport运行时需要的就是一个jasper后缀的文件,编译过程其实就是把jrxml后缀的文件生成jasper后缀的文件。(可以参考Jasperreport的运行原理) 静态运行和动态运行是相对的,后者带数据源运行,比如带数据库运行。前者就是静态文本运行,和数据源无关,如果报表中出现和数据源有关的对象,则以null显示。
   d、报表的结构···
       一个报表的结构大致是几个部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。
     ·Title:每个报表一般会有一个名字,比如×××销售报表,title就是搁置这个名称的最好地方了,当然你也可以根据需要搁置在合适的地方。
     ·pageHeader:报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。
     ·columnHeader:无可非议的这里是放置列的名称,记住不是列数据。
     ·Detial:放置需要循环的数据,比如销售记录数据。
     ·columnFooter:放置列级别的统计计算值或是列的说明。
     ·pageFooter:放置页级别的统计值或是页的说明。
     ·Summary:可能需要对几页(你的报表可能有几个页组成)的统计值。比如50个销售记录共占用了3页,那么放置这些统计记录的统计值最好的地方就是summary。
     ·groupHeader:每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),groupHeader就是放置组说明或是组标志最好的地方。
     ·Groupfooter:放置组的统计或是说明

8、建立一个新的报表·····

  a、新建一个空报表的基本配置
   单击工具栏的第一个工具“NewReport”,新建一个报表,输入报表名称和定义报表的一些参数,比如名称输入(例子是做一个项目的Bug量统计报表)单击【More….】选择标签,填写或是选择XML编码,这是关系到你的XML支持的字符集的选择,请根据需要选择,比如需要你的XML文件支持中文,那么可以输入或是GBK,之后点击【OK】按钮,进入报表的设计界面。
  b、定义报表可能需要的字体类型及其属性
    一个报表的内容五花八门,有表头、栏位名、数据、其他变量信息等等,如果这些信息都是一致的字体和属性(比如颜色),那么整个报表就死气沉沉,显得很粗糙了。我们可以在为报表添加每个元素时定义元素的属性,但是那是一个多么费时的工作,如果能预先定义一些属性的组合,之后在创建每个元素时只需选择这些组合的其中一个即可,省事又快速。
    单击【预览】-【报表字体】开启自定义组合对话框。单击【New】进入定义详细对话框,如图:
    按照图中的顺序填写信息和步骤,依次定义“表头”、“组”、“列”、“列内容”、“统计计算”、“其他”等6中字体组合。
    注意PDF内嵌字体的选择,如果你需要报表时以PDF文件格式提供,那么对此需要作出选择。
  9、向表添加对象····
  a、添加静态对象···
  可以通过工具栏的工具添加静态对象,比如文本,点击【T】,之后在报表的空白处单击,如此即可把静态对象添加到报表,然后拖动对象的边框,使它的大小合适,双击对象弹出对象的属性配置对话框,切换到【Font】Label,在“Reportfont”的ComBox选择“表头”字体,(表头字体是前文提供的自定义属性组合),再切换到【StaticText】Label,修改表头的名字,比如“Bug统计报表”或是“销售记录统计表”等等与业务有关的内容。添加图片,请点击【ImageTool】,之后的操作与Text类似。其他静态对象操作步骤类似。
  b、使用连接···
    还记得前文提供的(3.2节)配置MySql数据库连接吗?这里我们将要使用前文配置的连接了。选择菜单【建立】-【使用动态连接】开启可选的动态连接, 选择任何一个你需要的连接最后【OK】,保存报表,这样你的报表就使用了这个连接了。
   *【特别提示】 此连接必须与以后应用程序使用的连接一致。
  c、创建SQL查询语句····
   SQL语句是对任何RDBMS起作用的语言,外部用户需要使用这些语言管理维护数据库中的数据,同样的,iReport也是需要这么做,我们需要提供查询数据库的语言-SQL语句,这样,iReport即可通过此SQL语句获取数据,之后组织到报表中并显示出来,以满足用户的需要为目的。
   通过菜单【资料来源】-【报表查询】开启SQL输入对话框,并在【Report SQL Query】Label中输入SQL语句如图:图中的“Automatically RetrieveFields”checkbox和“ReadFields”Button是确认自动获取还是手动获取数据库表的可用Fields。单击【OK】,保存报表。
    

d、创建字段动态对象·····
   报表的动态对象有变量、参数、字段,前文提及了他们的概念,这里将要一一讲解如何使用。字段也就是数据库中的字段,通过菜单【预览】-【报表字段】开启字段的列表(工具条上可以找到相应的工具),可以拖放任意字段到报表的任何位置,比如拖动一部分Bug的内容字段到detial段(内容无关紧要,只要知道原理)。
  e、创建组···
     组是一个很重要的概念,一个报表可以多个组,每个组以一个关键字为标记,比如希望Bug统计是根据项目(或是产品)进行统计的。那么可以设立一个项目标记的组。如图:
 
       

组的参数设定可以看界面即可理解部分,其中最主要的是“Group expression”,这是必须输入格式正确的并且存在的字段名称,本文的“proname”是【字段】中的一个元素。依此类推,建立其他的组对象。
    每建立一个组,在报表的界面上都会出现该组对应的段,如图:他们是首尾对应出现的。(Header和Footer)
   
 
  f、添加参数和使用参数····
    我们重申参数作用,一般是需要外界提供参数给报表的入口,比如SQL语句的where条件的表达式。通过【预览】-【报表参数】开启报表参数列表对话框(工具条上可以找到相应的工具)。如图:输入名称及其他参数。【ok】,保存报表。
       那么如何使用呢?打开SQL语句对话框,参考“5.3创建SQL查询语句”,这时候的SQL语句应该是:SELECT * FROM bugs where proname=$P{ProjectName} order by proname,modulename
    注意其中的红体字部分,就是把刚才定义的变量运用到SQL语句了。这样当应用提供参数时,只要指定提供给这个参数,那么报表解释引擎即可替换这些变量然后再执行SQL语句,在第二部分提到编程时,会提供参数设定代码。
 
  g、添加变量和使用变量····
    变量的定义类似参数,通过【预览】-【报表变量】开启报表变量列表对话框(工具条上可以找到相应的工具),如图,图中定义的变量的作用是:定义一个Bug的计数器,数据类型是java.lang.Integer,使用Count函数进行统计字段tester,作用范围是模块组,也就是统计模块的Bug量。其中的tester可以改成其他非组对象,比如proname是组对象,就不要用作这里的统计参数。以上提供的是自定义变量,其实iReport系统还有提供一些内嵌(Buildin)的变量,比如页码,行记录数等,视需要而使用。
  
 
  10、最后的报表····
    a、完成后的报表···
    
    b、预览报表···
     点击动态运行报表,出现如图内容:
     

  11、在jsp中调用报表·····
    解决这个问题也用了我差不多2天时间:(,但总算是搞定了·····
    下面分别介绍以pdf格式和以html格式显示报表····
   a、pdf格式ireport_pdf.jsp····

   <%@ page import="net.sf.jasperreports.engine.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="java.io.*" %>
    <%@ page import="java.sql.*" %>
    <%
      //报表编译之后生成的.jasper 文件的存放位置
      File reportFile = new File(application.getRealPath("ireport/xueji.jasper"));
      //这个是用来联接我的mysql 的JDBC URL
      String url="jdbc:mysql://localhost:3306/xueji?useUnicode=true&characterEncoding=gb2312";
      Class.forName("org.gjt.mm.mysql.Driver").newInstance();
      //传递报表中用到的参数值
      Map parameters = new HashMap();
     //"Name"是报表中定义过的一个参数名称,其类型为String 型

     parameters.put("banji", new String(" c1"));
     System.out.println("---------conn-------------");
     //连接到数据库
     Connection conn = DriverManager.getConnection(url,"root","root");
     System.out.println("---------Jasper begin-------------");
     //在控制台显示一下报表文件的物理路径
     System.out.println(reportFile.getPath());
     byte[] bytes=JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,conn);

     System.out.println("---------Jasper end-------------");
     response.setContentType("application/pdf");
     response.setContentLength(bytes.length);
     ServletOutputStream ouputStream = response.getOutputStream();
     ouputStream.write(bytes, 0, bytes.length);
     ouputStream.flush();
     ouputStream.close();
   %>

   b、html格式ireport_html.jsp····

 
  
  
  
  
  
   <%


    File reportFile = new File(application.getRealPath("/ireport/xueji.jasper"));
    JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
    Map parameters = new HashMap();
    parameters.put("baiji", "c1");
   //parameters.put("BaseDir", reportFile.getParentFile());   
   //JRBeanArrayDataSource jrDataSource = new JRBeanArrayDataSource(objects);//objects为要打印的实体数组;

    Class.forName("org.gjt.mm.mysql.Driver");
    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/xueji","root","root");
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
         
    JRHtmlExporter exporter = new JRHtmlExporter();
    StringBuffer sbuffer = new StringBuffer();

    Map imagesMap = new HashMap();
    session.setAttribute("IMAGES_MAP", imagesMap);
   
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
    //exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
    //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/ireport/ireport_html.Image?image=");
    //exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "
");
    exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
    exporter.exportReport();
    //out.flush();
    conn.close();
   % >

注意:以html格式调用主要要注意//exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
                              //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "images目录的路径?image=");
                              在生成html预览的时候会生成一个px文件,而这个images_uri的路径就是那个px的路径,建议不用,就用下面
                              的语句就可以了····
                              exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);   
而这个语句则是处理分页用的····                              
//exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "
");


需要注意的地方····
必须在tomcat5以上版本中运行····
在运行的时候还要将jasperreports/lib下的包全部拷到tomcat下你所放文件目录下的win-inf/lib下···
特别要注意的是看看ireport/lib下的包与jasperreports/lib的包是否兼容···
之前我的一直有问题就是因为我的发布环境是jasperreports-0.6.7.jar而运行环境是jasperreports-0.6.8.jar···
这样也会出现错误的····

参考资料····
感谢···
http://www-128.ibm.com/developerworks/cn/java/j-ireport/?ca=dwcn-newsletter-java
http://blog.csdn.net/jemlee2002/archive/2004/10/05/125107.aspx