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中的文件,重啟服務。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM