ireport+jasperreport 成果心得

    1、首先理解和明白二者之間的關係、ireport相當於畫畫面的(xml格式,因爲不好掌握所以有此軟件的誕生,解決這樣的麻煩),jasperreport相當於傳值的,導出pdf等格式的。當然ireport也可以自己生成pdf,但對於比較複雜的就需要二者結合了。

 

   2、二者配置的時候要注意版本的一致性,如果不一致會報錯的invalid..... 什麼錯誤。如果不一致,簡單改法:ireport安裝目錄中有jasperreport的jar包,直接用這個就可以兼容了。

   3、中文亂碼或不顯示問題:如下

           PDF   font   name:   STSong-Light;

     pdfEncoding   =UniGB-UCS2-H ;

    將PDF   embedeed   encoding前的勾選上,並在下拉表中選擇UniGB-UCS2-V   (Chinese  Simplified)

  4、寫java代碼不識別這種字體的話會顯示無法load這種字體,那麼可以把ireport的lib下的“iTextAsian.jar”包拷貝一下。

  5、傳值的時候傳的是param,不是變量,這是自己犯得低級錯誤。呵呵

注意:如果ireport下沒有這個包,就需要下載,否則ireport的字體也是無法選擇的。

  6、ireport支持jdbc的數據源:

     建立數據源之後,可以直接在報表查詢中寫sql語句,注意在這裏多表 查詢的時候要用inner,內連接、外連接、union等,或子查詢,才能夠識別,直接用等號連接兩個表是不識別的。還有簡便的方法:就是直接用視圖。一切就ok了。這種方式自己認爲適合不太複雜的報表,對於還需要很多計算的報表應該用javabean的數據源。

  7、ireport支持javabean的數據源:已存完值的bean作爲數據源。注意這個數據源是個list。因爲可能會多條循環的。

     配置ireport的class路徑。在選項中設置類的路徑。javabean只識別編譯後的class;

     設置javabean數據源:設置時需要事先定義一個工廠,來生成上邊說的lsit。然後把工廠類名,產生list的static方法名寫好,測試連接;

     Field的產生,在報表查詢中選擇javabean數據源,在上邊寫上具體的bean。讀取屬性,就ok了。

  8、子報表的建立:可以理解爲一對多的關係

     主要是傳值問題:對於jdbc是一個數據源就直接傳默認的就行了;但是對於javabean則不行,子報表的數據源 new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{list}),相當於再主報表中list中的mainbean又嵌套了sublist,在sublist中存的是submainbean。把這個mainbean的list傳過去就ok了。

     注意:報表編譯時,先編譯子報表,後編譯主的。 而且對於javabean的子報表,編譯子的時候要選擇空的數據源,因爲數據源始傳過來的,編譯時肯定沒有,否則編譯報錯,提示找不到子bean中的字段。

    

  

 

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