日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iReport 4.1 报表、子报表、主从报表、合计、实例解析

發(fā)布時間:2024/4/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iReport 4.1 报表、子报表、主从报表、合计、实例解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

開發(fā)使用步驟(iReport 4.1.1)


1.????? 開發(fā)使用步驟(iReport4.1)... 2

4.1.?????? JasperReport 和iReport的介紹... 2

4.1.1.??????? JasperReport 簡介... 3

4.1.2.??????? iReport 簡介... 3

4.1.2.1.???? iReport幾個重要的概念... 3

4.1.2.2.???? iReport數(shù)據(jù)庫連接的建立 DataSource. 5

4.2.?????? 創(chuàng)建報表(以幾個不同類型的報表為例)... 7

4.2.1.??????? iReport基本報表(例:預交費用和押金報表)... 7

4.2.2.??????? iReport子報表SubReport(例:批量打印報表)... 13

4.2.3.??????? iReport table類型的表單(例:押金報表)... 21

4.2.4.??????? Dorado7中iReport的配置... 24

1.1.JasperReport?和iReport的介紹

網(wǎng)上有這個軟件的詳細介紹。可以搜索下,進一步了解。這里只是簡略介紹。?????

4.1.1.????? JasperReport?簡介

l? 一個報表是由一個源代碼的文件來描述,這個源文件就是由DTD(jasperreport.dtd, version 0.6.3 is listed in Appendix B)來定義的XML標記。在0.5.3版本中它的源文件擴展名變成了.jrxml; 取代了一般的.xml擴展名。報表的源代碼被編譯成jasper文件(擴展名是.jasper)。

l? jasper文件是一種預報表,嚴密的說就像是java的類被封狀成的對象。Jasper文件通過你的應用程序來加載。它被添加一個數(shù)據(jù)源的標記從而創(chuàng)建報表,接著它就能以你想要的格式輸出(例如:pdf或xls)。

4.1.2.????? iReport?簡介

l?iReport也是開源組織sf.net中的一款免費軟件,其主要作用是用來以可視化的方式設計生成JasperReport 所使用的報表格式文件,因為JasperReport 本身并未提供很好的可視化報表設計工具,iReport 的出現(xiàn)正好彌補了這個缺陷。

l????現(xiàn)在的iReport 的最新版本是4.1.3

l?iReport運行時需要sun java2 SDK 1.5及以上版本,為了能編譯我們的報表文件我們需要完整的安裝JDK。

4.1.2.1.??iReport幾個重要的概念

報表的動態(tài)對象變量、參數(shù)、字段

l?字段(Fields):是數(shù)據(jù)庫抽取出來的,希望在報表中出現(xiàn)的數(shù)據(jù)庫內(nèi)容。比如一個ID的所有值。$F{ filedsName }

l?參數(shù)(Parameters):這是你的應用需要提供給報表的入口,比如你希望在報表被解釋的時候提供Where語句的條件值,那么就可以使用參數(shù)(Parameters)。$P{ parameterName }

l?變量(Variables):這是報表中一些邏輯運算的表現(xiàn),比如統(tǒng)計值。$V{ variablesName }

報表結(jié)構(gòu)

報表被垂直分成若干個部分,每一個部分我們叫它“band”。每一個band都有自己的特性,在報表生成的時候有些會打印一次,有些會打印多次。報表的結(jié)構(gòu)大致是幾個部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。如下圖:

l??Title:title 段只在整個報表的第一頁的最上面部分顯示,除了第一頁,不管報表中有多少個頁面也不會再出現(xiàn)Title band 中的內(nèi)容。就是報表的標題。

l??pageHeader:pageHeader 段中的內(nèi)容將會在整個報表中的每一個頁面中都會出現(xiàn),顯示的位置在頁面的上部。如果是報表的第一頁,pageHeader 中的內(nèi)容將顯示在Title?? Band 下面,除了第一頁以外的其他所有頁面中,pageHeader 中的內(nèi)容將顯示在頁面的最上端,即頁眉。報表的一些公共要素,比如頁碼、創(chuàng)建時間、創(chuàng)建人等信息放置在這里是比較好的選擇。

l??columnHeader:無可非議的這里是放置列的名稱,記住不是列數(shù)據(jù)。

l??Detial:報表內(nèi)容段,在這個Band 中設計報表中需要重復出現(xiàn)的內(nèi)容,Detail 段中的內(nèi)容每頁都會出現(xiàn)。比如銷售記錄數(shù)據(jù)。

l??columnFooter:放置列級別的統(tǒng)計計算值或是列的說明。

l??pageFooter:顯示在所在頁面的最下端,即頁腳。放置頁級別的統(tǒng)計值或是頁的說明。

?4.1.2.2?iReport數(shù)據(jù)庫連接的建立 DataSource

l?打開iReport軟件后點擊Report Datasources

l?點擊new創(chuàng)建一個新的連接,選擇Datasource

l?填寫連接名稱選擇正確的驅(qū)動和URL等,點擊測試。成功后保存即可。

注:如果Driver為紅色則表示沒有這個驅(qū)動。需要添加相應的jar包。例如沒有ORACLE的驅(qū)動。添加jar包步驟

IReport中菜單欄中“工具”—“選項”—“classpath”—“AddJar”,添加 Ojdbc.jar文件。

?

?

1.1.創(chuàng)建報表(以幾個不同類型的報表為例)

利用iReport工具進行報表開發(fā)。以實例說明iReport的基本用法和小技巧。

1.1.??????

1.1.1.????? iReport基本報表(例:預交費用和押金報表)

1. 打開iReport。文件-à新建-à選擇BlankA4-àOpen this template

?

2. 為這個報表起名,并選擇保存位置,點擊下一步

3. 完成(新建空白報表完成)

4. 開始設計。

右鍵點擊報表名稱,選擇 editorquery打開report query 界面設計自己的sql語句(建議先寫一條參數(shù)固定的SQL),SQL設計好后會出現(xiàn)如下圖,右側(cè)的參數(shù)先不用管,點擊OK按鈕保存

5. 回到主界面,可以在左側(cè)Fields節(jié)點中看到SQL中查詢出來的所有字段

6. 表單的設計。

根據(jù)需求設計報表,組件面板中有各種不同的控件(控件此處不介紹使用方法)可以根據(jù)自己的需要選擇,拖動左側(cè)的Fields中的字段放到需要的位置,如圖

l?合計。

在左側(cè)Variables右擊添加字段,在屬性中設置其屬性,Variable Class建議使用java.math.BigDecimal(可以保留小數(shù)),Calculation中是幾不同的函數(shù),根據(jù)需要這里選擇sum,在Variable Expression 中選擇需要求和的字段,把Variables中的SUM字段拖到表單中需要的位置就可以啦。

?

l?預覽以及參數(shù)的設計。

點擊Preview預覽效果,如果沒有問題,開始設計參數(shù),也就是調(diào)整SQL語句。

????????

??????參數(shù):在主界面的Parameters中添加需要的參數(shù),并在屬性中配置。然后保存

l?調(diào)整SQL語句。

重新打開iReport Query 界面,這時候你可以在右側(cè)看到自己設計的參數(shù),拖動參數(shù)替換sql語句中之前固定的參數(shù)即可。這樣,當調(diào)用這個報表的時候,以同樣的參數(shù)名稱的參數(shù)傳給報表即可(前臺如何調(diào)用報表以及如何傳參在后面Dorado7中iReport的配置中說明)。

點擊保存后,查看預覽這時候就會提示你輸入?yún)?shù),輸入適合的參,報表設計完成

(注:這是一個簡單的報表制作。主要顯示iReport的基本功能,步驟相對詳細,下面的報表主要顯示一些技巧,重復的步驟不再截圖)

?

?

1.1.1.????? iReport子報表SubReport(例:批量打印報表)

1. 首先設計出一個子報表(在主表中需要顯示的部分),同樣有參數(shù)的設置,設

計步驟如上。以批量打印為例,選擇一棟樓,將該樓中查出來的不同的客戶信息作為參數(shù)傳給子表,批量打印客戶的繳費信息。子表設計如圖:

2. 主表的設計。

在主表的Detail部分(根據(jù)情況而定)中加入SubReport控件來添加子報表。拖入時,選擇好本地已經(jīng)存在的report(子表.jrxml原文件)。

3. 點擊下一步,到看到子表的參數(shù)的時候先不考慮點擊下一步,點擊完成,這時候你就可以看到下圖。子表已經(jīng)和主表聯(lián)系了起來。

點擊下一步,完成。

?

4.主表與子表間的參數(shù)傳遞。

如:子表中定義了一個參數(shù)house2clientid。把主表中查詢出來的值賦給這個參數(shù)。在主表中點擊添加的SubReport控件查看屬性。在parameters中添加參數(shù)house2clientid并定義指定是主表中的哪個字段。點擊ValueExpression右側(cè)的編輯圖標,選擇值,確定。這樣主表選的那個字段就作為參數(shù)傳給了子表。

?

?

技巧1:如何將子表中的合計傳遞給主表使用(子表向主表傳參)

1. 例:在子表中Variables中添加一個求某個字段的合計的參數(shù)sum,屬性設置如圖:

2. 在主表中同樣添加名稱一模一樣的參數(shù)sum ,并且屬性的配置一樣

???

3. 在主表中選中添加的SubReport控件查看屬性中最后一項Return Values,編輯calculation type中有不同的函數(shù),這里選擇Nothing(如果選中sum求和會自動計算每個子表表中合計的合計,也就是說會把傳過來的合計累加之前所有子表的合計)。點擊確定,這樣就可以把在子表中的合計放在主表中顯示

?

技巧2:巧妙利用子報表設計表單

????? 形如:下面的表單,可以看的出來,是有幾個不同的表單組合而成,主要是各個表單的行數(shù)是不固定的,這就需要做成三個表單或者table組合起來。表單可以利用主子表的關(guān)系,例如第一個表單作為子表單放在表單二的columnHeader位置,而表單二Detail放表單二需要查詢的內(nèi)容,同樣的把表單二作為子表放在表單三column Header位置,再把表單三作為子表放在主表的column Header位置這樣逐級往上走,可以設計出這樣的表單。當然各個報表的位置需要計算好。

參數(shù):這個時候只要在SubReport中以主傳給子表的順序設計參數(shù)即可,如下圖是表單三向表單二傳。

以下是各個主子表的設計,需要注意的是他們位置的調(diào)整。

?

?

1.1.1.????? iReport table類型的表單(例:押金報表)

在iReport中是有table的控件的,這里寫的table類型的表單主要是在不用table控件的情況下,運用iReport制作出table的樣式。以押金報表為例。

1.設計報表樣式布局,然后選中所有添加邊框的列,右擊選擇Padding and Borders 設計自己需要的格式,例如Line width 選擇1 選擇實線。就可以啦,當然可以根據(jù)需要設計邊框上下左右的線的樣式。這樣就設計好了類型為table的報表。

?

2.?另外一種設計就是在屬性面板中是利用控件的屬性來設置。形如圖。

?

3.可以嚴格分出table_ch、table_th、table_td、table的樣式(顯示不同的顏色)。選擇不同的行,在屬性style中修改屬性值(默認屬性是空)如下圖二、三。不過這個屬性存在一個問題 ,比如在上面的押金表中個利用這個是屬性就不行會提示如圖四的提示。是什么原因,暫時沒有解決,所以,如果style屬性不能使用的話,建議用第一種方式來設計表格。

(注:以上就是利用iReport做報表的用法報表之間參數(shù)的傳遞)

?

?

1.1.1.????? Dorado7中iReport的配置

2.4.1.Dorado7 中如何使用iReport打印報表

u??? 在服務器端安裝swftools-0.9.1.exe轉(zhuǎn)換工具

在war包的bdf.properties中配置bdf.report.pdfToSwf變量值,如:bdf.report.pdfToSwf=D:/Program Files/SWFTools/pdf2swf.exe

報表開發(fā)時注意添加一個parameter:CUSTOM_DATASOURCE,值為空,這樣框架會自動使用默認的數(shù)據(jù)源。

u??? jasper文件通過報表模板維護界面添加;(針對此項目,由于維護界面的問題,添加保存后還需要通過sqldeveloper直接在數(shù)據(jù)庫中設置bdf_reports其datasource_name=WY)

u??? 在業(yè)務界面上通過如下代碼打開報表:

view的packages設置為:jasperreports,swfviewer

js報表調(diào)用代碼:

var report = new bdf.JasperReports();

report.showReport("checkin",{p1:"value1",p2:"value2"});

其中第一個參數(shù)對應為報表模板中添加報表的名稱。

第二個參數(shù)json對象為需要傳入報表的參數(shù)定義;

?

2.4.2.???????Dorado7中iReport 預覽問題

預覽時中文漢字不能顯示。安裝xpdf-chinese-simplified語言包

步驟:

2.1.在war包的bdf.properties中配置bdf.report.pdfToSwf變量值,如:

bdf.report.xpdfPath=D:/ProgramFiles/xpdf-chinese-simplifie

2.2.依次選中可能出現(xiàn)漢字的文本框,進行如下設置

fontname:宋體

PDFfont name: STSong-Light;

pdfEncoding=UniGB-UCS2-H

PdfEmbedded:打鉤選擇(可有可無)

?

2.4.3.???????Dorado7中 Grid導出報表

將dorado7中的DataGrid以及AutoForm控件中的數(shù)據(jù)導出成報表(支持PDF和Excel兩種格式),同時可以利用BDF報表模塊的swf報表瀏覽器,在線瀏覽產(chǎn)生報表文件,供用戶在線瀏覽和下載使用。

u???同樣首先安裝swftool工具

u??? view的packages設置為:jasperreports,swfviewer

u??? 在業(yè)務界面上通過如下代碼調(diào)用即可。

var report = new bdf.Report();

report.showGridReportDialog(this,"gridFeeBill",null,true,

true,true);

·????????第一個參數(shù):表示當前的view對象;

·????????第二個參數(shù):表示要導出報表的DataGrid的id;

·????????第三個參數(shù):導出報表的初始化參數(shù);

·????????第四個參數(shù):是否顯示在線預覽按鈕;

·????????第五個參數(shù):是否顯示直接導出PDF按鈕;

·????????第六個參數(shù):是否顯示直接導出Excel按鈕;

u???在執(zhí)行js之后,可以根據(jù)自己的需要設計報表的樣式和標題。

(關(guān)于dorado7中Grid和Form的報表導出,在BSDN中有詳細說明

http://wiki.bsdn.org/pages/viewpage.action?pageId=3964933)

轉(zhuǎn)自?http://blog.csdn.net/q326527970/article/details/7049047iReport 4.1 報表制作,子報表,實例解析

總結(jié)

以上是生活随笔為你收集整理的iReport 4.1 报表、子报表、主从报表、合计、实例解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。