JasperReport報表生成工具的基本使用和常見問題

博為峰網校發表於2022-06-20

JasperReports介紹

JasperReport是一個強大、靈活的報表生成工具,能夠展示豐富的頁面內容,並將之轉換成PDF、HTML或者XML格式,該庫完全由Java寫出,可以用於在各種Java應用程式,非常適合Java開發者用來做報表生成。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

基本使用指南

新建專案

首先選擇模板,這裡就直接選了普通的A4模板。


這裡用來設定檔名字和檔案路徑。

這裡是選擇資料來源,我這裡已經事先建立好了資料庫連線,在後續測試取資料的時候會用到。

這裡就是JasperReport的主介面,首先介紹一下介面的五個主要區域:

區域1:選擇資料來源和專案;

區域2:用於展示報表的內容列表,報表內所含有的所有元件資訊都會展示在這裡;

區域3:就是視覺化報表內容區域,包含報表樣式,報表原始碼和預覽生成;

區域4:元件列表;

區域5:屬性編輯區域。

再介紹一下需要用的幾個基本屬性名稱:

Parameters:報表的引數,通常由外部傳入資料填充;

Fileds:欄位,由關聯的資料庫或實體類生成;

Vareables:變數,可以用來進行一些數學計算。

最後介紹一下報表內容的幾個模組:

Title(標題):只在整個報表的第一頁最上端顯示,其他頁面均不顯示;

Page Header(頁頭):在整個報表每一頁都會顯示,第一頁在Title區域下面,之後的每一頁均在頁面的最上端顯示;

Column Header(列頭):Detail中列印的是一張表的話,Column Header就是表中每一列的列頭;

Deatil(詳情):報表內容,可以迴圈顯示資料;

Column Footer(列腳):Detail中列印的是一張表的話,Column Footer就是表中每一列的列腳;

Page Footer(頁尾):整個報表每一頁都會在最下端顯示,一般用來顯示頁碼;

Summary(合計):出現在整個報表的最後一頁中,在Detail後面,主要用來做報表的合計顯示。

開始畫報表

這是該專案的原始碼,我在這裡需要取一些產品表裡的資料,queryString標籤內就是主專案的取數sql,直接加進去。

這裡加入sql後取到了產品ID欄位,後續會在報表內顯示,所以在FIelds域裡也新增了ID_PRODUCT的屬性,可以直接在程式碼裡新增,也可以在主介面新增,如下圖,直接右鍵Create Field,然後在區域5裡可以修改類和名稱。


接下來我們將Static Text和“Text Field”拖入Detail區域中,一個是靜態文字,一個用來放屬性。

雙擊Text Field,可以選擇我們剛才新新增的屬性ID_PRODUCT,並將靜態文字改為產品ID,即可初步生成我們的報表。

可以看到已經生成成功了,我這裡只去了前十條資料,這裡再展示一下通過外部輸入資料來篩選資料,使用投資性質VLU_INVEST_PROPERTY這個欄位,先新增該欄位的外部輸入引數,再在sql里加入對應篩選的語句。

之後將該欄位加入主介面,生成報表即可根據外部輸入該欄位來篩選資料。


這裡模板檔案生成的基本的操作流程就已經介紹完了,這時候是.jxml檔案,然後需要build成.jasper檔案,就可以在java程式裡呼叫jasper相關方法生成報表了。

常見問題

如圖錯誤

這個錯誤一般是由於頁面的寬度和列長度不匹配導致的。

在xml原始碼開頭將columnWidth改為比pageWidth小一截即可。

主介面有些表格無法顯示

很有可能是表格重疊導致,分開後即可。

無查詢結果

在使用table元件後,外部資料輸入後sql查詢沒有結果。

因為外部輸入的資料沒有傳遞到子查詢中,需要設定值的傳遞。

像圖中所示即可將主專案的值傳遞到table中。

記憶體洩漏或者溢位

可以使用模擬器來解決問題,推薦使用JRGzipVirtualizer模擬器,能夠將記憶體洩漏壓縮在最小的範圍裡了。

最後:

可以到我的個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的視訊學習教程免費分享!其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2901740/,如需轉載,請註明出處,否則將追究法律責任。

相關文章