ireport 5.1.0 入門教程之圖表詳解,本文介紹ireport 的圖表以及圖表的實現方法
工具/原料
ireport
方法/步驟
iReport很多的圖表(Chart)類型可提供使用。iReport現在支持Pie,Pie 3D,Bar,Bar 3D,XY Bar,Stacked Bar,Stacked Bar 3D,Line,XY Line,Area,XY Area,Scatter Plot,Bubble,Time Series,High Low Open Close和Candlestick 多種類型圖表。
iReport使用jfreechart作為其圖表引擎,jfreechart是一個強大的chart 生成工具。
創建chart的機制是建立在dataset的概念之上的,這就使得數據的管理和對更多複雜圖表類型如High Low 之類實現可視化。
第一個圖表
在這一章節裡我們將來學習如何使用chart 工具一步一步在一個報表裡創建一個Pie3D的chart。在這個例子中我們將使用doradosample裡的數據庫作為數據源。
建立一個空白的文檔,點擊 打開查詢窗口並且寫下如下查詢語句:
select employee_department,count(*) count from tb_employee group by employee_department
報表的查詢窗口
這裡我們想生成一個chart用來顯示根據學歷員工數目。點擊OK確認,iReport將註冊查詢得到的fields。同時把這些fields從objects library裡拖出放入detail的band裡。
選擇chart tool 在summary裡放置一個新的chart。
從charts窗口裡我們選擇pie3D圖標並按OK按鈕。
要配置chart,雙擊chart打開屬性窗口,同時你可以通過右鍵菜單的方式打開chart的屬性窗口。
點擊“Edit chart properties”按鈕出現的chart屬性窗口。
這個窗口包含兩個標籤:“Chart properties”和“Chart Data”。第一個標籤包含控件的parameters列表;第二個標籤是用來決定和當前圖片關聯的數據。修改圖形的不同樣式,設置背景的alpha和前景的alpha為0.5和depth factor(深度因子)為0.2。
下一步定義和圖形關聯的data。切換到“Chart Data”標籤。
在“Type of dataset”列表框中允許你指定一個dataset用來生成圖形。在“dataset”標籤裡你可以在報表的上下文裡指定一個dataset。Reset type和Reset group 允許你對dataset進行重置。
為了我們的需要,我們設置Reset type 為“Report”。當我們不想數據被重置時。同時我們設置Increment type 為None,這樣每一條記錄都將被附加到我們的dataset裡。
在Detail標籤裡允許你鍵入一個表達式和每一個在datasource裡單獨的值關聯。針對Pie 圖表類型,有三個表達式需要我們輸入:Key,Value和Label。
表達式Key允許你標識Pie圖裡的一塊。如果Key的值出現重複,那麼Label和Value的值會關聯起來用來覆蓋Key的值。一個Key值不能為null。Value的表達式值指定這個Key的數字值。
Label表達式的值允許你為並圖中每一塊指定一個標籤。這個表達式的值是可選的,同時默認值為“
確認對chart的修改,保存文件並且點擊 按鈕啟動報表。在圖14.9裡我們可以看到最後的效果。
數據集
當報表生成的時候,chart會去收集數據然後存儲在相關的dataset裡。Dataset類型有:
Pie
Category
Time period
Time series
XY
XYZ
High-Low
可以把dataset想成是一個表格,每一個dataset都有不同的列(fields)。當一條新記錄插入到dataset裡時值將會被添加到fields裡。
圖表屬性
我們可以通過圖顯示的窗口來管理chart的外觀。在這個窗口裡你可以查看並編輯charts和graphs的通用屬性(如title,圖例等)。
你可以使用表達式編輯框來更改Chart title 和Chart subtitle表達式
JasperReports只是利用了JFreeChart圖表庫的一小部分功能。如果你想自定義一個圖表你可以寫一個實現下面的接口的類:
Net.sf.jasperreports.engine.JRChartCustomizer
從這個接口中我們只需要實現一個方法:
Public void customize(JFreeChart chart,JRChart jasperChart);
在這個方法裡用JFreeChart和JRChart作為它的參數。JFreeChart作為第一個參數通常是用來產生圖片的,第二個參數包含用戶在設計階段一些參數。
同為比較常用的java報表生成工具,FineReport對圖表的解決方案和實現方法與ireport有所不同,具體實現思路和步驟如下,供ireport使用者借鑑:
FineReport中的圖表是用帆軟自主研發的HTML5圖表技術實現的,並不是靠第三方插件實現的,目前FineReport實現了:柱形圖、折線圖、條形圖、餅圖、面積圖、散點圖、氣泡圖、雷達圖、股價圖、儀表盤、全距圖、組合圖、地圖、甘特圖、gis地圖、圓環圖等樣式的圖表,同時提供了多種圖形組合設計。
具體的圖表製作方法如下:
1. 圖表製作流程
圖表製作流程如下圖:
該章節我們以下圖所示的柱形圖為例,展示各個地區產品類型的銷量情況,為大家簡單的介紹下圖表的製作流程。
. 示例
2.1 準備數據
在製作圖表前,需要先定義圖表的數據來源。
在上面的圖表製作流程中提到數據來源有兩種類型,數據集數據源和單元格數據源,本章節使用數據集作為數據源,如果需要使用單元格數據源,可查看定義圖表單元格數據源。
新建工作薄,添加數據集,SQL語句為SELECT * FROM [銷量],使用銷量表作為圖表的數據來源。
2.2 插入圖表並選擇圖表類型
圖表有兩種插入方式:單元格圖表與懸浮圖表,該例中我們以懸浮圖表為例,單元格圖表的插入方式請查看單元格圖表。
點擊工具欄中的插入>懸浮元素>插入圖表,彈出圖表嚮導,選擇圖表類型如柱形圖,如下圖:
注:插入圖表和選擇圖表類型一般性是在一起完成的。
2.3 定義圖表數據
選擇完圖表類型後,點擊確定,返回報表主體界面,選中懸浮圖表,在報表主體右側上方的圖表屬性表中設置圖表屬性,選擇圖表屬性表-數據,設置柱形圖的數據,如下圖:
設置圖表數據,首先要選擇數據來源,前面我們新建了一個數據集ds1,這張圖表的數據來源於數據集數據,選擇好數據來源之後,為分類軸、系列名、系列值綁定數據集中的字段,用圖表來展示數據集中的數據。
分類軸:就是圖表的橫軸,即x軸,表示數據是按照什麼分類顯示的;
系列名:系列就是圖表的縱軸,即y軸,系列名稱表示每個分類下數據是按照什麼順序顯示的;
系列值:就是每個系列的值;
彙總方式:對系列值的計算方式。
2.4 圖表樣式設置
· 標題設置
選中圖表,在設計器右側上方會出現圖表屬性表,選擇圖表屬性表-樣式>標題,增加圖表標題為:地區產品銷量,如下圖:
· 系列標籤設置
選擇圖表屬性表-樣式>標籤,勾選標籤,顯示出每個系列的值:
注:還可以給圖表設置其它圖表樣式。
2.5 保存模板
保存模板,預覽便可以看到效果如上圖。