最近使用了JasperReports和iReport制作了幾個(gè)報表,這片文章是我的一些總結。
JasperReports是一個(gè)開(kāi)源的java報表制作引擎
http://jasperreports.sourceforge.net
iReport是JasperReports的一個(gè)GUI工具,用來(lái)生成JasperReports的jrxml文件。
http://ireport.sourceforge.net
首先使用iReport制作報表的模板(我自己起的名詞):
運行iReport,新建一個(gè)report。
在Title band中輸入報表的名稱(chēng),好象使用pageheader band也可以,目前我還沒(méi)有弄明白2者具體的差別。
在column header band中放置一些static text,做為報表的列標題。
在detal band中放入一些textfield,顯示報表的詳細數據。
在summary band中放入類(lèi)似于"合計"之類(lèi)的textfield,這個(gè)band是顯示在最后一行數據的下放。
在LastPageFooter band中放入想在最后一頁(yè)顯示的信息,比如說(shuō)"審閱人簽名"之類(lèi)的。
這樣報表的框架就基本上搭好了,然后compile一下檢查是否有錯誤,如果沒(méi)有錯誤那么就可以在程序中使用這個(gè)報表模板了。
JasperReports介紹:
使用JasperReports生成報表是非常簡(jiǎn)單的,僅僅使用net.sf.jasperreports.engine包中的幾個(gè)類(lèi)即可完成報表的生成、預覽、打印、導出等各個(gè)功能。
1. net.sf.jasperreports.engine.JasperCompileManager類(lèi)。
使用這個(gè)類(lèi)的幾個(gè)靜態(tài)方法即可完成對報表的編譯工作(具體參見(jiàn)api文檔)
編譯完成后可以JasperCompileManager有兩種處理方式:
1> 返回一個(gè)JasperReport對象
2> 在.jrxml文件所在的目錄生成一個(gè).jasper文件
這兩種方式是由程序員自己選擇的。不過(guò)我比較傾向使用.jasper文件,畢竟報表的結構不是每天都在改動(dòng),所以每次重新編譯報表并不是很劃算。
2. net.sf.jasperreports.engine.JasperFillManager類(lèi)
這個(gè)類(lèi)的作用是用數據填充報表。它可以使用JasperReport對象也可以使用。jasper文件做為報表模板。
它同樣有2中處理方式:
1> 返回一個(gè)JsaperPrint對象。
2> 在.jasper文件所在目錄生成一個(gè).jrprint文件
這個(gè)類(lèi)使用net.sf.jasperreports.engine.JRDataSource接口的實(shí)現做為數據源。任何實(shí)現了JRDataSource的類(lèi)均可做為數據源使用
在net.sf.jasperreports.engine.data包中定義了一些數據源,可根據自己的需要選擇。這里我使用的是JRTableModelDataSource做為
數據源(因為我的報表還要顯示在Table中)。
3. net.sf.jasperreports.engine.JasperPrintManager和net.sf.jasperreports.engine.JasperExportManager
者兩個(gè)類(lèi)的作用是打印、導出報表
他們使用 JasperPrint 和 .jrprint文件做為輸入。
可以根據自己的需要使用里面的方法。
例:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
public class CompileReport {
public static void main(String args[]) {
try {
//編譯report.jrxml并在report.jrxml所在的目錄中生成report.jasper文件
JasperCompileManager.compileReportToFile("report.jrxml");
//填充數據,這里使用的是JREmptyDataSource
JasperFillManager.fillReportToFile("report.jasper", null, new JREmptyDataSource(50));
//預覽報表,false代表不是使用xml文件。
JasperViewer view = new JasperViewer("reports.jrprint", false);
view.pack();
view.setVisible(true);
}
catch (Exception e) {
e.printStackTrace()
}
}
}
這是我制作報表過(guò)程中的一點(diǎn)總結,寫(xiě)得并不詳細,留待以后補充。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。