ireport与jasperreports开发总结.docx

上传人:b****6 文档编号:3294523 上传时间:2022-11-21 格式:DOCX 页数:8 大小:156.82KB
下载 相关 举报
ireport与jasperreports开发总结.docx_第1页
第1页 / 共8页
ireport与jasperreports开发总结.docx_第2页
第2页 / 共8页
ireport与jasperreports开发总结.docx_第3页
第3页 / 共8页
ireport与jasperreports开发总结.docx_第4页
第4页 / 共8页
ireport与jasperreports开发总结.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

ireport与jasperreports开发总结.docx

《ireport与jasperreports开发总结.docx》由会员分享,可在线阅读,更多相关《ireport与jasperreports开发总结.docx(8页珍藏版)》请在冰豆网上搜索。

ireport与jasperreports开发总结.docx

ireport与jasperreports开发总结

一。

 下载ireport(官方网站:

),本人下载ireport3.7.0。

二。

 搭建ireport+jasperreportsjava开发平台。

将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包加入到 

        javaclassPath下。

其中各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方法省列):

    publicclassDailySalesimplementsSerializable{

    privatestaticfinallongserialVersionUID=1L;

    privateStringproductNo;//货物代号

    privateStringproductName;//货物名称

    privateintnumber;

    privateintmoney;//货物价格

     privateintid;//货物唯一标识

    privateListdailyZooms;//货物销售地区(子报表)

    publicDailySales(StringproductNo,StringproductName,intnumber,intmoney,

     List  dailyZooms){

     this.productNo=productNo;

    this.productName=productName;

    this.number=number;

    this.money=money;

    this.dailyZooms=dailyZooms;

   }

}

  第二步:

创建子报表报表javaBean(货物销售地区)如下(set,get方法省列):

 publicclassDailyZoomimplementsSerializable{

   privateStringname;

   privateBigDecimalamounts;

   publicDailyZoom(Stringname,BigDecimalamounts){

   this.name=name;

   this.amounts=amounts;

   }

}

注意:

如果在报表中需要排序则上述类必须实现Comparable接口,并实现其方法。

 

 第三步:

创建DailySalesFactory工厂类提供集合数据源如下:

      publicclassDailySalesFactory{

      privatestaticDailySales[]data={newDailySales("货号1","物品1",1,1000,getDailyZoom()),

      newDailySales("货号2","物品2",2,2000,getDailyZoom()),

      newDailySales("货号3","物品3",3,3000,getDailyZoom()),

      newDailySales("货号4","物品4",4,4000,getDailyZoom()),

      newDailySales("货号5","物品5",5,5000,getDailyZoom()),

      newDailySales("货号6","物品6",6,6000,getDailyZoom()),

      newDailySales("货号7","物品7",7,7000,getDailyZoom()),

      newDailySales("货号8","物品8",8,8000,getDailyZoom()),

      newDailySales("货号9","物品9",9,9000,getDailyZoom()),

      newDailySales("货号10","物品10",10,10000,getDailyZoom())};

      publicstaticObject[]getBeanArray(){

       returndata;

      }

      publicstaticCollectiongetBeanCollection(){

       returnArrays.asList(data);

      }

     publicstaticListgetDailyZoom(){

     ListdailyZooms=newArrayList();

    dailyZooms.add(newDailyZoom("厦门",newBigDecimal(123.00)));

    dailyZooms.add(newDailyZoom("南昌",newBigDecimal(456.00)));

    returndailyZooms;

    }

  }

将上述创建的类设置到ireport3.7.0的classPath目录下(工具》选项》classPath),然后配置javaBean数据源如下:

第四步:

设定ireport模版如下:

 

 

注意:

(1)pdf中文设定:

首先将iTextAsian.jar設置到classPath下.然後fontspath下勾選iTextAsian.jar路徑和jasperreports-extensions-3.5.3.jar路徑,最後将会显示中文的文本PdfFontnameisnowdeprecated:

STSong-Light,pdfExcoding:

UniGB-UCS2-V(ChineseSimplified)(V是从上往下显示,H是从左往右显示)。

        

(2)上下和左右表格要对其,否则生成的excel会很乱。

         (3)Parameters,Fields,Variables区别:

Parameters是保存从java外部传进来的参数,Fields是Sql或javaBean数据查询返回的字段,Variables是ireport计算或保存值的。

        (4)分页:

强行分页可直接使用Break控件,程序控制分页(让它每显示20条就自动分页)在该printwhenexpression里面写表达式,如下:

newBoolean($V{total}.intValue()%20==0)   total是数据总量

        (5)分組統計的報表.每一分組一頁(在ireport中***groupfoot1勾選startonanewpage).

   第五步:

使用数据源开发子报表如下:

                

 

 注意:

(1)SubreportExpression中$P{SUBREPORT_DIR}+"javaBeanReport_subreport1.jasper"中为子报表编译后文件的路径,其中$P{SUBREPORT_DIR} 是从java中传进子报表路径。

         

(2)DataSourceExpression:

newnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{dailyZooms})是使用主报表List集合构造子报表JavaBean数据源。

 第五步:

从java中加载ireport做好的模板生成报表如下:

    将集合转换成javaBeanDataSource:

    JRBeanCollectionDataSourcejavaBeanDataSource=newJRBeanCollectionDataSource(results);

    将jrxml编译成jasper:

    JasperReportjasperReport=JasperCompileMpileReport("c:

/javaBeanReport.jrxml");

    生成JasperPrint对象:

    JasperPrintjasperPrint=JasperFillManager.fillReport

     (jasperReport,parameters,  javaBeanDataSource);parameters为要传如的参数Map对象

     生成pdf流对象:

JasperExportManager.exportReportToPdfStream(jasperPrint,stream);

    调用ireport中JasperViewer查看pdf

    JasperViewerjrview=newJasperViewer(jasperPrint);

    jrview.setPreferredSize(newDimension(200,100));

    jrview.setVisible(true);

   生成excel代码如下:

   JRXlsExporterexporter=newJRXlsExporter();

   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代码:

    Mapparameters=newHashMap();

    parameters.put("SUBREPORT_DIR","C:

/DocumentsandSettings/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包)

        

        

          

          /reports/demoReport.jasper

           list

           PDF

          map

         

       

       

    

    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:

Couldnotloadthefollowingfont:

      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)

    异常:

Foundtwocomponentsfornamespace

    解决方法.查看是否在工程目录添加了外部jar[jasperreports-X.X.X.jar],[jasperreports-X.X.X-javaflow.jar]

    如果有同时添加了这两个jar.移除[jasperreports-3.5.3-javaflow.jar]则可.

  六.ireport其他資料

     

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1