日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JasperReport:声明周期

發布時間:2024/4/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:声明周期的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。