ireport 的一些技巧

首先ireport中大小寫問題:

1、parameter中如果小寫,引用也小寫

2、$F{},一般都大寫

3、子報表中引用父報表中查詢出來的值時,只需要小寫即可,即在子報表的parameter中只需要小寫

一、iReport 中獲取系統當前時間

1、選擇 TextField 類型爲 java.util.Date,選擇TextField的Expression Class(類型)爲 java.util.Date

2、在 pattern 中選擇時間格式

3、在 TextField Expression 中寫 java.util.Calendar.getInstance().getTime()


二、避免爲空

方法一、在屬性選項中找到 blank when null 即可

方法二、$F{ABB614}?$F{ABB614}:""

 

三、設置時間格式

方法一、可以使用內嵌函數截取字符串來顯示

1、利用substring來截取 (針對String類型)

$F{AAE036}?(($F{AAE036}.toString()).substring(0,4)+"年"+($F{AAE036}.toString()).substring(4,6)+"月"+($F{AAE036}.toString()).substring(6,8)+"日"):""

2、利用內置的函數來取 (針對date類型)

"日期"+($F{ABB017}?String.valueOf($F{ABB017}.getYear()+1900)+"年"+String.valueOf($F{ABB017}.getMonth()+1)+"月"+$F{ABB017}.getDate():"")+"日

方法二、設置 Exception class 爲date類型,然後 pattern 中設置時間格式,可以自己寫,例如××××年××月××日,但是要注意,如果爲空無法用 $F{ABB614}?$F{ABB614}:"",只能使用 blank when null 這種方法


四、在ireport中使用html中的標籤

例如:<br> 

1、找到屬性面板中的 markup 選擇爲html

2、在需要的地方加入<br>


五、使某個字段中的數據在特定條件下才打印出來

    通過設置字段的 PrintWhenExpression ,我們可以限定只有在某些特定的條件下字段值纔會被打印出來,在PrintWhenExpression 中需要設置Boolean 型的表達式,如:new java.lang.Boolean($F{type}.trim().equals("mod_cook"))


六、嵌套子報表

1、在面板屬性中找到 Subreport ,然後拖進你要放入的地方,放開鼠標後,會有一個新建報表。新建完報表之後會有個名爲SUBREPORT_DIR 的Parameter,string類型,他會有個默認路徑,指的是子報表的路徑。由於子報表往往有多條數據,故最好單獨放在一個detail中(例如:查詢出來有多條數據,那麼會循環顯示在detail中)。

2、如果子報表中需要傳入數據,那麼就先點中子報表,然後在屬性欄(不是參數裏)中找到“ parameters ”,新建一個,例如:

     name爲abz050  , Expression 爲$F{ABZ050},因爲這裏的值是父報表查詢的出來之後的值,所以不是用Parameter,而是Field。

3、在子報表中引用值,首先在子報表中定義一個變量 Parameter ,然後引用即可。

那爲什麼能找到呢?

因爲:你在創建子報表的時候,也會自動創建一個 Parameter ,名稱默認爲 SUBREPORT_DIR ,它裏面有個默認路徑(新傳入的路徑會覆蓋該默認路徑)。

同時,可以點中子報表查看他的屬性,裏面有個 Subreport Exception 的值爲 $P{SUBREPORT_DIR} + "子報表名稱.jasper" ,這樣系統就能找到了。當然系統還會自動配置一些其他子報表屬性,具體的自己新建一個看看吧。


七、自動換行

    如果不處理一下,有些字段的內容太長了就會顯示不全。選中該字段,右擊 -> 屬性,在 Text Field Stretch with overflow 勾上。

    同時把該行所有的字段選上,右擊 -> 屬性,在 Common Stretch Type 選擇 Relative to tallest object。


八、內嵌函數的使用

舉例:($F{ABB617}).toString()).substring(0,4)+"年"          把ABB617(Date類型)先轉化成String然後截取年

ireport中使用內嵌函數只要在字段上看看他有哪些方法,然後直接使用即可。


九、高度根據內容自動變高

1、選中主鍵,在屬性中找到 Stretch With Overflow 並選中。並把他單獨放在一個 Detial或者其他 裏面即可。
2、還有一個屬性叫
Stretch type ,默認的值是No Stretch,可以改成Relative To Band Height。

第二個步驟我個人認爲可做可不做。

     當然第二個步驟的功能在做表格的時候很有用,例如:表格是2列,那麼兩邊的數據肯定不一樣,或者是左邊就是靜態的,那麼如果不選擇這個屬性,你就會發現,右邊的數據很多的時候會擴充,但是左邊不會,這個時候,我們就可以設置該屬性,並把它們放到一個單獨Detial或者其他容器中,那樣 左右兩邊 就會等高了

 


十、設置共幾頁,第幾頁

$V{PAGE_NUMBER} 表示當前是第幾頁 ,在text field 的 選項evaluation time選report是共幾頁,now表是當前頁。頁碼可在ireport裏直接設置。  “共幾頁 第幾頁”

我是寫在page footer 中。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章