1. 程式人生 > >[Jasper使用總結]iReport報表設計-整體介紹(二)

[Jasper使用總結]iReport報表設計-整體介紹(二)

iReport的檔案分為兩種,一種為.jrxml 原始檔(類似.java),一種為.jasper編譯檔案(類似.class)。我們在ireport裡拖拽生成的即為.jrxml檔案。而點選預覽生成的即為.jasper檔案。

說是.jrxml,其實也是一個XML檔案,只是這個檔案需要符合ireport的xsd格式,而且也可以擴充套件自己的標籤,只是自己定義的標籤就不支援拖拽了,除非自己實現它。

通過我們設計的.jrxml,我們可以將任何資料來源(比如jdbc,cvs,xml,javabeans,excel等等)一系列的資料,轉換為我們想要的格式,匯出為HTML/EXCEL/WORD/PDF/FLASH等報表檔案。

一、iReport 報表檔案-基本屬性


分類 屬性名稱 功能描述
report name 報表名稱
Page Size
Page Width 頁面寬度
Page height 頁面高度
Orientation 報表方向,可為橫式或豎式,預設為大眾的豎式
Margins
Left margin 頁面左端空白,單位px,預設20px
Right margin 頁面右端空白,單位px,預設20px
Top margin 頁面頂端空白,單位px,預設20px
Bottom margin 頁面底端空白,單位px,預設20px
Columns
Columns 報表分為幾列,預設為一列。
Column Width 每列的寬度
Column space 列間空白
Print order 列印方式-垂直/水平。預設垂直
More
Scriptlet class 自定義scriptlet,可在報表生成時自定義一些行為。
Resource bundle 報表所用資原始檔,支援國際化
When Resource Missing Type 當資源屬性未找到是,值為什麼? 可為null,空白,報錯,element的key
Query Text SQL查詢語句,也可在DataSet中設定。
The language for the dataset query SQL語句的型別,也可在DataSet中設定。比如普通SQL,Hibernate,MDX等
Filter Expression 對SQL語句查詢的結果,再次進行過濾,用ireport expression 編寫,返回型別必須為Boolean型別
Properties 報表所支援的一些額外屬性設定
Title on a new page 是否Title單獨佔用一頁
Summary on a new page 是否Summary單獨佔用一頁
Summary with Page Header and Footer Summary中是否顯示Page Header 和 Page Footer
Float column footer
Ignore pagination 是否不分頁,整個報表顯示在一頁中
Column Direction 報表是居左還是居右顯示
When No Data 當Main DataSet記錄為0時,顯示什麼內容?可選項為: 1.除Details Band外的所有內容 2.空白頁 3.顯示NoData Band (可為報表單獨定義該band,用於無資料時,進行資訊提示) 4.什麼都不顯示
Language 該報表的expression的型別:可選項為-java,groovy,javascript
Format Factory Class 可自定義Data 和 Number型別等的格式化方案,該類需繼承自XX類
Imports 可以引用其他包,自定義或第三方等。例如org.myself.utils
二、iReport 內容 - Bands ( 我們的畫板 ) 整個報表的內容,是由很多的Bands組成的,而我們要做的就是在這些Bands上繪製我們想要的文字,圖片,圖表,背景等。 其實就相當於我們的畫布,只不過這個畫板有點多,且每個畫板的功能也不同,還有一些屬性需要設定,綜合配置好這些,才能畫一副完整的報表圖畫出來~
    a) 每個畫板都有3個屬性:
Band height band的高度
Print When Expression 當表示式為TRUE時,才顯示該Band
Split Type 可設定當內容超過當前Band高度時,是繼續顯示一部分,還是在新的一頁顯示完整內容。
1.Immediate 直接顯示不完整資訊
2.Prevent 到新的一頁顯示完整資訊
3.Stretch 延伸當前頁,顯示完整資訊

     b) 各個畫板的功能描述 :
Band Name 功能描述
Title 報表的標題,僅顯示一次,可設定為單獨佔一頁。
需注意在這裡使用variable時,不能設定其Evaluation Time 為 Now,否則為null
Page Header 每頁的頭部,在每頁都會顯示一次
Column Header 每列的頭部,一般的情況下,我們將表頭設定在這裡。
XXX Group Header 當報表中存在Group時,才有此band。顯示在每個Group的開始位置。有多少個Group顯示多少次。一般將Group Name 顯示在這裡
Detail 資料明細,每行資料在這裡顯示。有多少行資料,顯示多少次。
XXX Group Footer 當報表中存在Group時,才有此band。顯示在每個Group的結束位置。有多少個Group顯示多少次。一般將Group 彙總計算資訊 顯示在這裡
Column Footer 每列的底部,一般的情況下,將整個資料明細彙總資訊顯示在這裡。
Page Footer 每頁的底部,在每頁都會顯示一次
Last Page Footer 最後一頁的底部,在最後一頁才顯示一次。
Summary 彙總頁,僅在報表最後顯示一次,一般將整個報表的彙總資訊顯示在這裡。
No Data 當報表查詢記錄為0時,可設定顯示該Band內容。比如可設定其內容為:“當前查詢無資料,如有問題請聯絡XXXX.”
Background 整個報表的背景,比如我們給整個報表設定一個水印效果

二、DataSet
光有畫板是不行的,我們還需要顏料,那就是DataSet,也就是資料來源。就有了資料,才能開始加工設計。 iReport支援多個DataSet,預設僅有一個Main Data Set。 iReport支援的查詢型別也很多,普通SQL,HQL,MDX Query,Json等等。 另外還可以為JavaBean,這樣業務邏輯就可以放入Java 的Service裡處理了。 三Parameters,Fields
Parameters與Fields都來自於外部。一個是外部傳入的引數,一個是根據資料來源生成的欄位(當然也可以字的自定義Fields)         Parameters 主要由報表外部傳入,它預設已經自帶了一些系統引數,例如REPORT_PARAMETERS_MAP,REPORT_DATA_SOURCE,REPORT_MAX_COUNT,REPORT_TIME_ZONE等。另外也可自定義自己的Parameters,比如統計時間段,組織No等業務引數。 Fields 一般由資料來源查詢SQL自動生成,一般不用管。它對應SQL/JavaBean中查詢出個各個欄位名稱。 四、Variables Variables類似於方法內部定義的區域性變數,方便我們進行計算彙總,以及常量定義等。         系統自帶幾個引數:比如當前Page Number,當前Column Number,總Report Count,總Page Count,總Column Count。通過這些自定義引數,我們可以設定一下特殊樣式,比如隔行變色等。         另外,我們還可以自定義一些Var,進行Sum,Avg,Count等計算。因內容較多,後面單獨總結吧。 五、Elements 畫板上可以畫啥子東西呢?可以畫靜態文字,動態文字,JFreeChart圖表,Flash圖表,HTML5圖表,Maps,交叉表,條形碼等等各種Elements。甚至我也可以自定義一個元件,用來顯示;還可以顯示HTML程式碼;呼叫JS指令碼等。 這裡抱怨一下,Chart這種用的JFreeChart的圖片效果的圖表,是否該廢棄了?樣子老難看的說~ 還有其Charts Pro,Maps Pro,Widgets Pro 3種Flash 報表都是基於Fusionchart實現的,而且是用的免費版Fusionchart,可選擇的圖表型別實在是太少了...如果能改為FusionChart收費版,功能該多麼強大。只能意淫一下了...         在4.7以後的版本里出現了HTML5 Charts,估計也是為了彌補Flash Chart方面的不足嗎?但是目前來說HTML5 Charts能支援的圖表型別也是不多啊 而Spider Chart,還是用的舊的JFreeChart或其自定義實現的一個圖片效果的圖表,樣子要多難看也多難看。(在3.7版本里,甚至都沒有這個圖表型別,還是自己做了一個外掛實現的,效果都比它這個好看。) 好歹是收費版,你不能做的更漂亮,更炫麗,圖表型別,功能選擇更多一點嗎? 還好有了Generic Element和HTML元件,我們可以呼叫JS,HTML,或Java程式碼實現自己的元件,但是畢竟要自己動手,而且這樣出來的貌似只支援HTML匯出呢。 整個報表基本上就是由這些部分組成了,我們要做的就是根據這些元件或元素,畫出我們想要的效果。簡要介紹總結完畢~ 又進了一小步

相關推薦

[Jasper使用總結]iReport報表設計-整體介紹

iReport的檔案分為兩種,一種為.jrxml 原始檔(類似.java),一種為.jasper編譯檔案(類似.class)。我們在ireport裡拖拽生成的即為.jrxml檔案。而點選預覽生成的即為.jasper檔案。 說是.jrxml,其實也是一個XML檔案,只是這個檔

23種設計模式介紹---- 結構型模式

implement weight 代碼 介紹 定義 裝飾器模式 大量 技術分享 記憶 由於設計模式篇幅比較大,如果在一篇文章講完所有的設計模式的話不利於閱讀。於是我把它分為三篇文章 23種設計模式介紹(一)---- 創建型模式 23種設計模式介紹(二)---- 結構

23種設計模式介紹---- 創建型模式

接口 ret static 深復制 return 對象 相互 object c png 由於設計模式篇幅比較大,如果在一篇文章講完所有的設計模式的話不利於閱讀。於是我把它分為三篇文章 23種設計模式介紹(一)---- 創建型模式 23種設計模式介紹(二)---- 結構型模

Spring Data Redis整體介紹

目前 擴展 刪除 依據 實例化 -m doc 不同的 SDR 為什麽使用Spring Data Redis 首先Spring Data Redis 是Spring 框架提供的用於操作Redis的客戶端。 Spring框架是一個全棧Java程序框架,通過DI、AOP和便攜的服

23種設計模式介紹---- 行為型模式

不同 延遲 log 實現 其中 sta IE class 發出 由於設計模式篇幅比較大,如果在一篇文章講完所有的設計模式的話不利於閱讀。於是我把它分為三篇文章 23種設計模式介紹(一)---- 創建型模式 23種設計模式介紹(二)---- 結構型模式 23

DNS服務器介紹——主從復制和區域轉發

dns;區域轉發;主從復值背景介紹實際環境中為了避免單點故障,DNS服務器是由一組服務器組成每一個服務器上都有若幹個區域,不同服務器上的相同區域分為主和從兩種角色。由於正向和反向是不同的區域,所以多臺服務器間的相同區域可以互為主從或者一主多從,本處以右圖為例進行演示。DNS服務器的主從復制1.之前已經在172

集成CCFlow工作流與GPM的辦公系統馳騁CCOA介紹

崗位 mes 顯示 ccf 辦公 人員 文件 ron min GPM怎樣控制菜單權限以及菜單的增刪顯示 因為CCOA中僅僅有屬於admin才幹夠進行權限管理與流程設計。password為pub。 1.加入CCOA功能菜單 進入GPM後,找到編號為CCOA的信

Struts2入門介紹

輸入 clu ons dom 訪問路徑 訪問 filter pri locale 一、Struts執行過程的分析。   當我們在瀏覽器中輸入了網址http://127.0.0.1:8080/Struts2_01/hello.action的時候,Struts2做了如下過程:

深度學習數學基礎介紹概率與數理統計

特征 數字特征 抽樣分布 第5章 最大 中心 3.4 獨立 知識 第1章 隨機事件與概率§1.1 隨機事件§1.2 隨機事件的概率§1.3 古典概型與幾何概型§1.4 條件概率§1.5 事件的獨立性 第2章 隨機變量的分布與數字特征§2.1 隨機變量及其分布§2.2 隨機變

上門洗車APP --- Androidclient開發 之 網絡框架封裝介紹

glob imp success rgb sed error margin p s 再次 上門洗車APP --- Androidclient開發 之 網絡框架封裝介紹(二)前幾篇博文中給大家介紹了一下APP中的基本業務及開發本項目使用的網絡架構:上門洗車APP ---

Spring MVC 框架結構介紹

指定 let url 16px () isp -s 一個 ping Spring MVC框架結構    Spring MVC是圍繞DispatcherServlet設計的,DispatcherServlet向處理程序分發各種請求。處理程序[email prot

Wireshark使用介紹:應用Wireshark觀察基本網絡協議

使用 額外 傳輸過程 直接 nal http協議 ges log 傳輸 TCP: TCP/IP通過三次握手建立一個連接。這一過程中的三種報文是:SYN,SYN/ACK,ACK。 第一步是找到PC發送到網絡服務器的第一個SYN報文,這標識了TCP三次握手的開始。

設計模式學習“觀察者模式” C#

original pan 學習筆記 pri 接口 program date contain 兩個 《深入淺出設計模式》學習筆記第二章 需求: 開發一套氣象監測應用,如圖: 氣象站,目前有三種裝置,溫度、濕度和氣壓感應裝置。 WeatherData對象追蹤氣象站的數據,並更

實現自定義查詢的數據庫設計及實現

表名 table abr bigint sts 處理 update 關聯表 creat 上部分大概講了一下表設計,這部分講一下處理。 處理的結構 處理結構的內容比較多,分為幾個部分分別講解一下。首先講解一下尋找關系表。 尋找關系表 尋找關系表根據“表間關系登記表”進行處

javascript 對象簡單介紹

則表達式 數字 orange red 1.4 dom 空白字符 手冊 document JavaScript Array(數組) 對象數組對象的作用是:使用單獨的變量名來存儲一系列的值。 什麽是數組?數組對象是使用單獨的變量名來存儲一系列的值。如果你有一組數據(例如:車名字

[數據分析工具] Pandas 功能介紹

技術 describe 索引 sum cat std 簡單 方法 nbsp 條件過濾 我們需要看第一季度的數據是怎樣的,就需要使用條件過濾 體感的舒適適濕度是40-70,我們試著過濾出體感舒適濕度的數據 最後整合上面兩種條件,在一季度體感濕度比較舒適的數據

MongoDB復制集的工作原理介紹

不能 數據同步 nat ring $inc tla 2.3 支持 pla 復制集工作原理 1)數據復制原理 開啟復制集後,主節點會在 local 庫下生成一個集合叫 oplog.rs,這是一個有限集合,也就是大小是固定的。其中記錄的是整個mongod實例一段時間內數據庫

自動化運維工具ansible Playbook介紹

nec 註意 ddr 連接 文件中 可用 ges use sta 一.playbook介紹playbook是由一個或多個"play"組成的列表。play的主要功能在於將事先歸並為一組的主機裝扮成事先通過ansible中的task定義好的角色。從根本上來講

PHP規範PSR7HTTP訊息介面介紹

1.3 流 HTTP訊息由起始行,標題和正文組成。 HTTP訊息的主體可能非常小或非常大。嘗試將訊息正文表示為字串很容易消耗比預期更多的記憶體,因為正文必須完全儲存在記憶體中。嘗試將請求或響應的主體儲存在記憶體中將阻止使用該實現能夠使用大型訊息體。 StreamInterface用於在讀取或寫入

PHP規範PSR2編碼指南介紹

4.4 方法引數 在引數列表中,每個逗號前不得有空格,每個逗號後必須有一個空格。 具有預設值的方法引數必須位於引數列表的末尾。 <?php namespace Vendor\Package; class ClassName { public function foo($a