JasperReports入门教程(一):快速入门
JasperReports入門教程(一):快速入門
背景
現(xiàn)在公司的項(xiàng)目需要實(shí)現(xiàn)一個(gè)可以配置的報(bào)表,以便快速的適應(yīng)客戶的需求變化。后來在網(wǎng)上查資料發(fā)現(xiàn)可以使用JasperReports + Jaspersoft Studio工具來實(shí)現(xiàn)可配置的報(bào)表。在使用過程中也積累了一些經(jīng)驗(yàn),就想分享出來給大家,作為一個(gè)入門的指引,讓大家可以更快速的上手。下面大家跟著我一起來實(shí)現(xiàn)第一個(gè)JasperReports的報(bào)表應(yīng)用。
JasperReports基本介紹
JasperReports是一個(gè)非常強(qiáng)大,易用的開源報(bào)表引擎,它是用Java編寫的。它可以通過各種各樣的數(shù)據(jù)源來生成像素級(jí)的文檔,這些文檔都可以查看,打印以及導(dǎo)出(文檔格式包括HTML、PDF、Excel、Word等等)。下面我們先嘗試通過一個(gè)簡(jiǎn)單的demo進(jìn)行上手。
Jaspersoft Studio
Jaspersoft Studio是一個(gè)設(shè)計(jì)報(bào)表模板的工具,我們通過它來設(shè)計(jì)需要使用報(bào)表的模板。
1.下載Jaspersoft Studio工具,選擇下載Jaspersoft Studio CE 下載地址
2.安裝Jaspersoft Studio,安裝過程略過,默認(rèn)安裝即可
3.開始我們的第一個(gè)報(bào)表模板
3.1.打開Jaspersoft Studio工具,點(diǎn)擊File->New->Project先創(chuàng)建一個(gè)項(xiàng)目
然后填寫項(xiàng)目名字為demo,創(chuàng)建一個(gè)名叫demo的項(xiàng)目
3.2.點(diǎn)擊File->New->Jasper Report(也可以直接在demo項(xiàng)目上右鍵New->Jasper Report),選擇一個(gè)豎向A4紙大小的模板
Data Adapter可以選擇 One Empty Record 選項(xiàng),即空數(shù)據(jù)源,完成后就創(chuàng)建好了第一個(gè)模板
4.模板設(shè)計(jì)界面的區(qū)域說明如下。中間的模板設(shè)計(jì)區(qū)域分別多個(gè)band,這些band都可以右鍵刪除
Title:標(biāo)題區(qū),如果數(shù)據(jù)有多頁只會(huì)在第一頁打印
Page Header:頁頭區(qū),多頁的情況下每頁都會(huì)打印
Column Header:列頭區(qū),配合下面的Detail區(qū)打印列表數(shù)據(jù),多頁的情況下每頁都會(huì)打印
Detail:可以新增多個(gè)Detail區(qū),可以組合打印出多個(gè)列表數(shù)據(jù),多頁的情況下每頁都會(huì)打印
Column Footer:列表底部區(qū),多頁的情況下每頁都會(huì)打印
Page Footer:頁底部區(qū),多頁的情況下每頁都會(huì)打印
Summary:合計(jì)區(qū),只會(huì)在最后一頁打印
5.添加報(bào)表元素
5.1.先從右側(cè)Basic Elements區(qū)域拖拽一個(gè)Static Text元素到Title區(qū),可以任意調(diào)整元素的大小和位置,雙擊可以修改元素要顯示的內(nèi)容,
選中元素后,可以在右側(cè)設(shè)置元素的邊框,字體和大小,文本的對(duì)齊方式等等。
5.2.在左側(cè)Outline區(qū)域Paramters上右鍵Create Paramter創(chuàng)建一個(gè)新的屬性,命名為name,類型java.lang.String
5.3.拖拽name屬性到Page Header區(qū)域,同樣可以在右側(cè)設(shè)置它的屬性
5.4.在左側(cè)Outline區(qū)域Fields上右鍵 Create Field創(chuàng)建兩個(gè)字段Field1,F(xiàn)ield2,類型java.lang.String
5.5.然后拖拽Field1,F(xiàn)ield2字段到Detail1區(qū)域,會(huì)自動(dòng)帶出兩個(gè)值為Field1,F(xiàn)ield2的Static Text元素在Column Header區(qū)域,調(diào)整位置對(duì)齊
5.6.預(yù)覽可以看看樣式,因?yàn)榇藭r(shí)我們未給Field1,F(xiàn)ield2的數(shù)據(jù)集賦值,所以預(yù)覽的為null
6.編譯報(bào)表模板
6.1.在左側(cè)的Project Explorer框文件Blank_A4.jrxml上右鍵Compile Report可以生成編譯好的文件Blank_A4.jasper
7.在java中調(diào)用模板并輸出到pdf/html
上面我們?cè)谠O(shè)計(jì)器中設(shè)計(jì)好了報(bào)表的模板,下面我們需要在java中通過代碼把數(shù)據(jù)填充到模板中,并展示出來。
7.1.首先需要在maven中引用jasperreports的jar包依賴
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.9.0</version>
</dependency>
7.2.然后把6.1步驟中編譯好的文件Blank_A4.jasper放入資源文件中
7.3.然后調(diào)用代碼把數(shù)據(jù)填充到模板中,為了方便后續(xù)使用,我把JasperReport常用的方法封裝到了JasperReportUtil類中
@GetMapping("/jasper")
public void getReport(@RequestParam("type") String reportType, HttpServletResponse response)
throws Exception {
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("name", "xiao ming");
List<HashMap> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
HashMap<String, String> item = new HashMap<String, String>();
item.put("Field1", "Field1-" + i);
item.put("Field2", "Field2-" + i);
list.add(item);
}
String jasperPath = JasperReportUtil.getJasperFileDir("chapter1");
if (reportType.equals("pdf")) {
JasperReportUtil.exportToPdf(jasperPath, parameters, list, response);
} else if (reportType.equals("html")) {
JasperReportUtil.exportToHtml(jasperPath, parameters, list, response);
}
}
7.4.把項(xiàng)目運(yùn)行起來,在瀏覽器中訪問 http://localhost:8080/test/jasper?type=html 或者 http://localhost:8080/test/jasper?type=pdf 就可以在瀏覽器中看到html或者pdf格式的報(bào)表了
本節(jié)代碼和報(bào)表模板
總結(jié)
以上是生活随笔為你收集整理的JasperReports入门教程(一):快速入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cloudera目录位置
- 下一篇: 桂林山水甲天下的甲是什么意思(桂林山水甲