使用iReport製作報表模板

一、iReport介紹

說 到iReport不得不先介紹Jasperreport,Jasperreport是一個報表製作程序,用戶需要按照它制定的規則編寫一個XML文件,然 後得到用戶需要輸出的格式文件。它支持輸出的文件格式包括PDF,HTML,XML,XLS,CVS等等。而iReport就是一個製作 Jasperreport的XML文件的可視化開發工具。





回頁首


二、模板制板

首先必須下載一個iRport(地址:http://ireport.sourceforge.net),現在的最高版是0.4.0,我們這裏使用的是0.2.2。

將iReport解壓縮以後編輯目錄下的iReport.bat文件即可,如下


@echo off

set JAVA_HOME=C:/j2sdk1.4.0_03
set ANT_HOME=C:/ant
set IREPORT_HOME=C:/Documenti/progetti/iReport/iReport2/

rem %ANT_HOME%/bin/ant javadocs
%ANT_HOME%/bin/ant iReport

只要設置相應的一些路經就可以,這裏是採用ant來運行,當然如果你沒有安裝ant也不想安裝它,那麼也可以,找到noAnt文件夾下的startup.bat文件即可運行。

建立新模板時,便得到如圖所示的界面。

選中菜單項"Datatsource",單擊其子菜單項"Connection/Datasources",便會彈出一個編輯框,選擇"New"按鈕,

輸入數據源名稱,選擇JDBC Driver,在輸入JDBC URL時,可以點擊"Wizard"按鈕,它會根據你選的JDBC Driver配置好你的URL,不過得修改IP地址以及DatabaseName,輸入數據庫名、用戶名、密碼。點擊"Test"按鈕,確定連接情況,然 後保存。

下圖是我做好的一個報表模板:





$F{}是用來標明這是數據庫字段。$F{WINDOWS_NAME}、$F{NUMBER}、$F{vname}、$F{SP_NAME}和$F {SP_TYPE}是數據庫裏的字段,也是我要在模板裏用到的字段。對於$F{NUMBER}、$F{vname}、$F{SP_NAME}和$F {SP_TYPE}這四個字段,雖然放在其他域也可以顯示出結果,比如:pageHeader域、columnHeader域、columnFooter 域等等,但是因爲會有多列的數據要顯示,所以必須放到"detail"域中。

模板畫完了,現在來配置模板的查詢語句,以及字段、變量和參數。

首先輸入查詢語句,如"select * from v_baseinfo_statbanjiereport",點擊"Read fields"按鈕,會查詢出該表的所有字段名



如 果您要有條件的查詢,那麼就在後面添加Where語句,如"select * from v_baseinfo_statbanjiereport where DEPT_NAME=$P{orgname} and END_SP_DAY=$P{etime}",點擊"Save query to report"按鈕保存。

這裏要提醒大家注意的是,您可以直接把參數寫入Where語句中,象這樣"where DEPT_NAME='中國' and END_SP_DAY='2004-11-23'";但是從java程序或者jsp頁面傳過來的參數是中文字符的話,您就必須做編碼轉換或者用英文字符、 數字來代替;還有像日期參數"2004-11-23",jasperreports好象解析不了,如果你把SQL語句改成" select * from v_baseinfo_statbanjiereport where DEPT_NAME='$P{orgname}' and END_SP_DAY='$P{etime}'",那麼又會拋出異常,因爲Jasperreport會先把SQL語句設置成預編譯語句"select * from v_baseinfo_statbanjiereport where DEPT_NAME=?and END_SP_DAY=?",所以SQL語句中用到參數的時候,除了其特定的"$P{}"符號外,不能有別的標點符號,傳進去的參數值也儘量不要帶標點符 號,所以日期格式得改成"20041123"。

設置模板字段:



設置模板參數:



當這些全部做完後,點擊"Save"按鈕,就會生成一個XML文件,再點擊"Compile"按鈕,就會生成一個後綴名爲jasper的文件。

現 在可以預覽一下模板的效果,先選擇菜單項"Build"的子菜單項"PDF preview"、"HTML preview"、"JAVA 2D preview"、"Excel preview"、"CSV preview"和"JRViewer preview"中的一項(對這些項顯示工具的配置在菜單項Tools/Options..下的External programs), 再點擊"Execute report";如果你想帶數據預覽,還得先激活一下剛配置的數據源,選中菜單欄"Build"下的子菜單欄"Set active connection",會彈出一編輯框,選中一個數據源名稱,點擊"OK"。

此時我們就要引入一個jsp頁面,假設是pdf.jsp,那麼下面就是pdf.jsp的代碼:


<%@ page import="dori.jasper.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>

<%
File reportFile = new File(application.getRealPath("/reports/ribanjietongji.jasper"));

Map parameters = new HashMap();
parameters.put("orgname", "zhongguo");
parameters.put("etime", "20041123");
Connection conn=null

//以下忽略得到數據庫連接過程
//……

byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
conn
);

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
%>

程序裏面要和大家說明的就是,"/reports/test.jasper"這個路徑是相對於你這個jsp頁面的,比如你的jsp頁面保存在D://../ROOT/目錄下,那麼你就必須在這個目錄下建一個report目錄,然後把你做好的報表模板文件放到該目錄下來。


Map parameters = new HashMap();
parameters.put("orgname", "zhongguo");
parameters.put("etime", "20041123");

"orgname"和"etime"必須和模板時定義的參數名稱一致。

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