報表技術之PDF格式報表生成 (JasperResport)
1.JasperReport
IText PDF 類庫 , 編程非常複雜 ,運維成本非常高
2.IReport 圖形化報表開發工具 下載安裝
下載網址:
http://community.jaspersoft.com/project/ireport-designer/releases
安裝只需要默認即可完成。(路徑可以自己選擇),注意:可能需要jdk1.7才能打開
3.IReport 報表模板簡介和設置中文生成
3.1. 新建 JasperReport 模板文件 .jrxml
3.2.設置默認語言
對輸入中文內容 設置組件屬性
在 IReport 引入 ITextAsian.jar 字庫
3.3.瞭解報表模板結構
Title: 報表標題
PageHeader: 頁眉
ColumnHeader: 表格列標題
Detail: 表格數據內容
ColumnFooter: 表格頁腳
PageFooter: 頁腳
Summary: 摘要
3.4.常用報表組件
StaticText: 靜態文本
TextField : 顯示動態文本
設置預覽格式爲 PDF
4.IReport 配置數據庫連接,基於數據表生成報表
4.1.點擊按鈕配置數據庫連接
新建JDBC連接
4.2 在 ireport 添加 oracle 的 jdbc 驅動
4.3 通過 ReportQuery 查詢數據庫
4.4.設計報表
5.JasperResport 根據模板文件 生成報表
5.1. 設置 ireport 字段 自動換行
5.2將桌面(文件路徑)的waybill.jrxml文件複製到項目中
5.3在頁面添加按鈕,並綁定點擊事件,提交表單
5.4在maven項目的父模塊添加jasperReport依賴
5.5 在 ReportAction 添加 exportJasperPdf 方法
問題:當項目的功能夠多時,可能會出現jar包衝突(當導入本次是jackson包衝突)
Caused by: java.lang.ClassNotFoundException:
com.fasterxml.jackson.annotation.ObjectIdResolver
在pom的座標中引入
生成的PDF可能會出現沒有自動換行,因爲你的邊框沒有設置足夠的大小,導致換行的數據沒有被顯示出來,可以調高字段行高
效果展示(格式比較亂,可以細心去調每個內容的間距、行高等)
5.6.從數據導入只能顯示與數據庫字段項匹配的,但是當想描述一些數據庫中沒有的數據,就需要以下操作
重新設計ireport報表:在 ireport 添加 符合 WayBill 對象屬性的 Field
修改 ReportAction 代碼
異常:
Caused by: QueryPhaseExecutionException[Result window is too large, from + size must be less than or equal to: [10000] but was [2147483647]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.]
修復 WayBillServiceImpl 查詢數據代碼:
注意:當模板中有中文時,一定要設置字體和字體的編碼