JasperReport:声明周期
JasperReport的開發步驟
JasperReport生命周期
通常我們提到PDF報表的時候,浮現在腦海中的是最終的PDF文檔文件。在JasperReports中,這只是報表生命周期的最后階段。通過JasperReports生成PDF報表一共要經過三個階段,我們稱之為 JasperReport的生命周期,這三個階段為:設計(Design)階段、執行(Execution)階段以及輸出(Export)階段,如下圖所示:
1. 設計階段(Design):所謂的報表設計就是創建一些模板,模板包含了報表的布局與設計,包括執行計算的復雜公式、可選的從數據源獲取數據的查詢語句、以及其它的一些信息。模板設計完成之后,我們將模板保存為JRXML文件(JR代表JasperReports),其實就是一個XML文件。
2. 執行階段(Execution):使用以JRXML文件編譯為可執行的二進制文件(即.Jasper文件)結合數據進行執行,填充報表數據
3. 輸出階段(Export):數據填充結束,可以指定輸出為多種形式的報表
JasperReport原理簡述
1. JRXML:報表填充模板,本質是一個XML.
JasperReport已經封裝了一個dtd,只要按照規定的格式寫這個xml文件,那么jasperReport就可以將其解析最終生成報表,但是jasperReport所解析的不是我們常見的.xml文件,而是.jrxml文件,其實跟xml是一樣的,只是后綴不一樣。
2. Jasper:由JRXML模板編譯生成的二進制文件,用于代碼填充數據。
解析完成后JasperReport就開始編譯.jrxml文件,將其編譯成.jasper文件,因為JasperReport只可以對.jasper文件進行填充數據和轉換,這步操作就跟我們java中將java文件編譯成class文件是一樣的
3. Jrprint:當用數據填充完Jasper后生成的文件,用于輸出報表。
這一步才是JasperReport的核心所在,它會根據你在xml里面寫好的查詢語句來查詢指定是數據庫,也可以控制在后臺編寫查詢語句,參數,數據庫。在報表填充完后,會再生成一個.jrprint格式的文件(讀取jasper文件進行填充,然后生成一個jrprint文件)
4. Exporter:決定要輸出的報表為何種格式,報表輸出的管理類。
5. Jasperreport可以輸出多種格式的報表文件,常見的有Html,PDF,xls等
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>jr-demo</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>6.5.0</version></dependency><dependency><groupId>org.olap4j</groupId><artifactId>olap4j</artifactId><version>1.2.0</version></dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.0.1</version></dependency></dependencies> </project> package com.learn.jr;import net.sf.jasperreports.engine.JREmptyDataSource; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.view.JasperViewer;import java.util.HashMap;public class PDFTest {public static void main(String[] args) {showPdf();}public static void createJasper(){try{String path = "C:\\Users\\leon\\Desktop\\00\\test01.jrxml";JasperCompileManager.compileReportToFile(path);}catch(Exception e){e.printStackTrace();}}public static void createJrprint(){try{String path = "C:\\Users\\leon\\Desktop\\00\\test01.jasper";//通過空參數和空數據源進行填充JasperFillManager.fillReportToFile(path,new HashMap(),new JREmptyDataSource());}catch(Exception e){e.printStackTrace();}}public static void showPdf(){try{String path = "C:\\Users\\leon\\Desktop\\00\\test01.jrprint";JasperViewer.viewReport(path,false);}catch(Exception e){e.printStackTrace();}} }?
總結
以上是生活随笔為你收集整理的JasperReport:声明周期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JasperReport:概述
- 下一篇: Jaspersoft Studio:整合