zoukankan      html  css  js  c++  java
  • JasperReport使用心得

    1. JasperReport 报表文件视图化生成工具iReport。

     iReport做为一个生成JasperReport的视图工具,和我们是使用的大多数报表创建工具没有太大的差别,都是拖控件,搭出报表的样子,和水晶报表差不多。但是iReport有一个不同的地方,它的存储文件是是一个.jrxml的文件,是一个纯xml文件,编译后会产生一个.jasper的文件,这两个文件,在构建报表的时候都是需要的。

    note:

      1. 拖完页面,编译一下,可以发现新建的文件中的一些错误,例如 页面中使用的值是否在dataSource的Fields中定义。

      2. JasperReport 中有一个非常简单的dataSource:net.sf.jasperreports.engine.data.JRBeanCollectionDataSource可以使用。

     它有一个构造方法,可以传入一个集合来产生这个dataSource。  

    例如:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{collectionList}) 就是建立一个以collectionList作为数据的数据源。在report中我们就可以使用$F{Field}(是collectionList<Bean> Bean中的属性)来得到List中每个Bean的数据了。

    2.JasperReport 生成report

    // 编译.jrxml文件

    JasperCompileManager.compileReportToFile("testJasperReport.jrxml"), context.getRealPath("testJasperReport.jasper"));

    // 加载jasper

    File reportFile = new File("testJasperReport.jasper");

    JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());

    // 填充Report  parameters 是一个Map,new net.sf.jasperreports.engine.JREmptyDataSource()表示我们不需要传入是个空DataSource

    // 将数据和xml组合,生成需要的打印文件

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new net.sf.jasperreports.engine.JREmptyDataSource());

     // 将jasperPrint输出到html页面上

    JRHtmlExporter exporter = new JRHtmlExporter(); 
    request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
    exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image?image=");

    // 设置分页
    exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "<br style='page-break-before:always;'>");

    System.out.println("jasperreports html print stop");

    exporter.exportReport();

    附:

     ireport在服务器中发布出现问题及其解决方案

      1. 报表打印文件(.jasper)无法生成,有找不对象错误,造成原因为文件系统空间不足。

      分析后,发现由于报表打印文件生成时,会创建一些字体,这些字体会创建在/tmp文件目录下(linux),如果在服务器中,此处空间不足,字体无法创建,报表将不能生成。

      解决办法为,删除tmp中的文件,重启服务。

  • 相关阅读:
    VSCode中快捷键位设置优化
    错误检测(4) CRC
    linux 中的col命令
    使Chrome的字体渲染更清晰
    并发工具类(三)控制并发线程的数量 Semphore
    并发工具类(二)同步屏障CyclicBarrier
    并发工具类(一)等待多线程的CountDownLatch
    显式锁(四)Lock的等待通知机制Condition
    显式锁(三)读写锁ReadWriteLock
    显式锁(二)Lock接口与显示锁介绍
  • 原文地址:https://www.cnblogs.com/UUUz/p/10782161.html
Copyright © 2011-2022 走看看