iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
Software Development

Java工程師的報表入門與實作系列 第 4

報表設計好朋友Jaspersoft Studio(下)-認識Parameters與Fields、設計模板內容

  • 分享至 

  • xImage
  •  

在設計報表時,我們可以用直接拖曳的方式將元素配置在模板,這時候就會開始有些疑問:
那我該使用什麼元素?

配置元素到模板-文字型元素

一個最簡約的報表至少都會有文字,在設計報表標題、表頭的時候,最常使用的文字型元素就是Static Text與Text Field:

  • Static Text: 靜態文字,就是固定不變的文字,輸入文字時不用加雙引號,通常會用於Title、Column Header。
  • Text Field: 為字串型態的文字,和Java語法一樣必須用雙引號括住,通常用於Detail。

範例1:拖曳元素設計報表佈局

如果是初學者,從上一篇的簡介到現在可能還是一頭霧水,我們直接來做個簡單的例子,因應中秋節烤肉,設計一個購買烤肉用品的統計Excel表。

  1. 想好要什麼樣子的報表後,先刪除不需要的Band,在Band上面點滑鼠右鍵 → Delete,只留下Title, Page Header, Column Header, Detail, Summary

  2. 因為是匯出Excel,我不需要報表四個邊保留Margin,因此(1.)到左下區域點選報表名稱「Demo」 → (2.)到右下屬性區域點擊「Edit Page Format」 → (3.)將Margins都設為0,(也能適時在此視窗調整報表模板寬高)

  3. 調整Band高度:(1.)點選Band → (2.)在右下屬性區域調整高度,我想把每個Band都調整為30px

  4. (1.)從右側Basic Elements區域拖曳所需的元素到Band區塊中,點兩下就可以編輯元素的文字;點一下選取元素時,可在右下屬性區域調整元素的(2.)邊框、(3.)長寬、(4.)文字的字體與對齊方式等等

    • Title是固定的文字所以使用Static text
    • 在Page Header中我想顯示購買日期,且購買日期是後端程式決定,因此使用Text field
    • Column Header顯示欄位名稱,是固定的文字所以使用Static Text
    • Detail顯示購買商品的資料,資料從後端對應,使用Text field
    • Summary的部分顯示購買總金額,資料從後端計算,使用Text field
  • 元素都放好後或是調整過程中,可以參考第二步的畫面調整報表模板寬高,最後報表的佈局就初步完成了:

Parameters與Fields

除了元素的佈局外,最重要的是後端的資料要怎麼對應到模板上,這時候就需要Parameters與Fields。這兩個東西與Text Field的關係密不可分,主要的功用如下:

Parameters

  • Paramters是從外部(例如後端)傳入報表的值,是一張報表中全域的屬性。通常用來動態設定報表中的內容,如時間或自訂訊息
  • 在Text Field中的表示式為$P{parameterName}
  • Parameter可以用在報表的任何區域,常用在報表的Title, Page Header, Page Footer等

Fields

  • Fields是從後端DataSource中以屬性名稱對應傳入的值,代表報表顯示的具體資料
  • 在Text Field中的表示式為$F{fieldName}
  • Field只能用在報表的Detail
  • Field的名稱與型別一定要與Java中的屬性名稱與型別相同,才能互相對應

Parameters與Fields都需要定義型別,且型別與Java相同,String,Long,Double,List等等都能夠選擇。

範例2:為報表設定Parameters與Fields

接著範例1的模板,設定與後端程式對應的Parameters與Fields

  1. 新增Parameters:我們有「購買日期」與「金額總計」這兩個Parameters要設定,因此到左下區域的「Parameters」點右鍵 -> Create Parameter

  2. 到右下的屬性區域設定名稱與Java型別,新增後Parameter就會出現在「Parameters」列表中

  3. (1.)分別到「購買日期」與「金額總計」Text field點兩下,會彈出Expression Editor視窗 -> (2.)在左側點擊「Parameters」 -> (3.)到中間的區域往下拉會找到剛剛新增的Parameter -> (4.)游標到上方表達式區域點一下使游標focus -> 對要使用的Parameter點兩下,表達式就會自動加上去了
    ▲注意不要將表達式放在字串裡,而是使用「+」串接,例如"購買日期:" + $P{formatDate}

  4. 新增Fields:我們有「商品名稱」、「購買金額」、「購買數量」、「購買金額小計」四個Fields,同樣到左下區域的「Fields」點右鍵 -> Create Field

  5. 接下來的設定都與新增Parameters一樣,要設定名稱與型別,只是點選的地方換成Fields,就不贅述了
    https://ithelp.ithome.com.tw/upload/images/20240919/20169094rfvt6KwgiC.jpg

  6. 都設定好之後大概會是這個樣子:
    https://ithelp.ithome.com.tw/upload/images/20240919/20169094r4R94xPHuX.jpg

終於完成啦~
下一篇會針對Java後端以模擬的DataSource對應我們模板的Parameters與Fields,並使用JasperReports API完成報表的生命週期。


Reference


上一篇
報表設計好朋友Jaspersoft Studio(上)-建立空白模板、認識使用介面
下一篇
JasperReports-用Java匯出Excel範例報表
系列文
Java工程師的報表入門與實作15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言