![]() |
![]() |
級別: 初級 舒峰, 軟件工程師, 湖南省長(cháng)沙鐵道學(xué)院科創(chuàng )計算機系統集成有限公司 2005 年 1 月 01 日 現在很多公司和個(gè)人都在使用iReport制作報表模板,我接觸的時(shí)間也不長(cháng),在這里,我將我在實(shí)踐過(guò)程中的一些經(jīng)驗以及碰到的一些問(wèn)題和大家一起來(lái)探討。 說(shuō)到iReport不得不先介紹Jasperreport,Jasperreport是一個(gè)報表制作程序,用戶(hù)需要按照它制定的規則編寫(xiě)一個(gè)XML文件,然后得到用戶(hù)需要輸出的格式文件。它支持輸出的文件格式包括PDF,HTML,XML,XLS,CVS等等。而iReport就是一個(gè)制作Jasperreport的XML文件的可視化開(kāi)發(fā)工具。
首先必須下載一個(gè)iRport(地址:http://ireport.sourceforge.net),現在的最高版是0.4.0,我們這里使用的是0.2.2。 將iReport解壓縮以后編輯目錄下的iReport.bat文件即可,如下
只要設置相應的一些路經(jīng)就可以,這里是采用ant來(lái)運行,當然如果你沒(méi)有安裝ant也不想安裝它,那么也可以,找到noAnt文件夾下的startup.bat文件即可運行。 建立新模板時(shí),便得到如圖所示的界面。 ![]() 選中菜單項"Datatsource",單擊其子菜單項"Connection/Datasources",便會(huì )彈出一個(gè)編輯框,選擇"New"按鈕, ![]() 輸入數據源名稱(chēng),選擇JDBC Driver,在輸入JDBC URL時(shí),可以點(diǎn)擊"Wizard"按鈕,它會(huì )根據你選的JDBC Driver配置好你的URL,不過(guò)得修改IP地址以及DatabaseName,輸入數據庫名、用戶(hù)名、密碼。點(diǎn)擊"Test"按鈕,確定連接情況,然后保存。 下圖是我做好的一個(gè)報表模板: ![]() $F{}是用來(lái)標明這是數據庫字段。$F{WINDOWS_NAME}、$F{NUMBER}、$F{vname}、$F{SP_NAME}和$F{SP_TYPE}是數據庫里的字段,也是我要在模板里用到的字段。對于$F{NUMBER}、$F{vname}、$F{SP_NAME}和$F{SP_TYPE}這四個(gè)字段,雖然放在其他域也可以顯示出結果,比如:pageHeader域、columnHeader域、columnFooter域等等,但是因為會(huì )有多列的數據要顯示,所以必須放到"detail"域中。 模板畫(huà)完了,現在來(lái)配置模板的查詢(xún)語(yǔ)句,以及字段、變量和參數。 首先輸入查詢(xún)語(yǔ)句,如"select * from v_baseinfo_statbanjiereport",點(diǎn)擊"Read fields"按鈕,會(huì )查詢(xún)出該表的所有字段名 ![]() 如果您要有條件的查詢(xún),那么就在后面添加Where語(yǔ)句,如"select * from v_baseinfo_statbanjiereport where DEPT_NAME=$P{orgname} and END_SP_DAY=$P{etime}",點(diǎn)擊"Save query to report"按鈕保存。 這里要提醒大家注意的是,您可以直接把參數寫(xiě)入Where語(yǔ)句中,象這樣"where DEPT_NAME=‘中國‘ and END_SP_DAY=‘2004-11-23‘";但是從java程序或者jsp頁(yè)面傳過(guò)來(lái)的參數是中文字符的話(huà),您就必須做編碼轉換或者用英文字符、數字來(lái)代替;還有像日期參數"2004-11-23",jasperreports好象解析不了,如果你把SQL語(yǔ)句改成" select * from v_baseinfo_statbanjiereport where DEPT_NAME=‘$P{orgname}‘ and END_SP_DAY=‘$P{etime}‘",那么又會(huì )拋出異常,因為Jasperreport會(huì )先把SQL語(yǔ)句設置成預編譯語(yǔ)句"select * from v_baseinfo_statbanjiereport where DEPT_NAME=?and END_SP_DAY=?",所以SQL語(yǔ)句中用到參數的時(shí)候,除了其特定的"$P{}"符號外,不能有別的標點(diǎn)符號,傳進(jìn)去的參數值也盡量不要帶標點(diǎn)符號,所以日期格式得改成"20041123"。 設置模板字段: ![]() 設置模板參數: ![]() 當這些全部做完后,點(diǎn)擊"Save"按鈕,就會(huì )生成一個(gè)XML文件,再點(diǎn)擊"Compile"按鈕,就會(huì )生成一個(gè)后綴名為jasper的文件。 現在可以預覽一下模板的效果,先選擇菜單項"Build"的子菜單項"PDF preview"、"HTML preview"、"JAVA 2D preview"、"Excel preview"、"CSV preview"和"JRViewer preview"中的一項(對這些項顯示工具的配置在菜單項Tools\Options..下的External programs), 再點(diǎn)擊"Execute report";如果你想帶數據預覽,還得先激活一下剛配置的數據源,選中菜單欄"Build"下的子菜單欄"Set active connection",會(huì )彈出一編輯框,選中一個(gè)數據源名稱(chēng),點(diǎn)擊"OK"。 此時(shí)我們就要引入一個(gè)jsp頁(yè)面,假設是pdf.jsp,那么下面就是pdf.jsp的代碼:
程序里面要和大家說(shuō)明的就是,"/reports/test.jasper"這個(gè)路徑是相對于你這個(gè)jsp頁(yè)面的,比如你的jsp頁(yè)面保存在D:\\..\ROOT\目錄下,那么你就必須在這個(gè)目錄下建一個(gè)report目錄,然后把你做好的報表模板文件放到該目錄下來(lái)。
"orgname"和"etime"必須和模板時(shí)定義的參數名稱(chēng)一致。
到此整個(gè)模板就算完成了,有什么沒(méi)有說(shuō)明白或者錯誤的地方,希望你能和我一起來(lái)討論。 |
聯(lián)系客服