下面我們通過圖表製作軟件FineReport來介紹幾個在行式報表下的典型應用示例。
工具/原料
圖表製作軟件FineReport7.1.1
大小:148.2M 適用平臺:windows/linux
添加預警,間隔背景色-條件
問題描述
在滿足一定條件下改變單元格的格式或者顯示成不同的值。如運貨費大於100元就紅色預警,單元格背景色間隔顯示等。
打開報表
打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\DetailReport\Details_2.cpt
間隔背景色
右擊訂單ID數據列單元格,選擇條件屬性,添加一個條件屬性,選擇改變的屬性為背景。
當滿足條件row()%2==0時,給這一行加上背景色。row()為獲取當前行號,被2整除即偶數行有背景,奇數行沒有背景。
紅色預警
右擊運貨費數據列單元格,選擇條件屬性,添加一個條件屬性,選擇要改變的屬性為前景色。
當滿足條件currentValue>100,當前運貨費大於100的單元格前景色修改為紅色。
條件屬性的作用是對滿足條件的數據進行高亮顯示如加上背景色等,從而突出顯示異常數據,其中新值屬性會改變單元格實際值
篩選數據-過濾
問題描述
我們想從大量的數據當中,獲取到符合條件的數據,例如網格式報表中,我們只想獲得已付訂單的記錄:
解決方案
方案一:直接通過SQL語句取出滿足條件的的數據,如修改數據集SQL語句為:SELECT * FROM 訂單 where 是否已付 = 'TRUE',查看詳細SQL語法。
方案二:通過數據列過濾來解決,本節詳細介紹該方案的用法。
實現步驟
打開報表
打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\DetailReport\Details_3.cpt
設置過濾
選中訂單ID數據列單元格,點擊過濾按鈕或者雙擊單元格,選擇過濾標籤,進入過濾設置對話框,設置過濾條件是否已付等於'true',如下圖:
注:由於單元格的計算順序,過濾條件需要設置在單元格的父格上,如這裡的訂單ID,先取出已付的訂單號,而其子格會自動繼承父格條件,將父格子作為過濾條件。
排序
問題描述
我們需要將一些數據進行排序,這樣顯示出來比較有層次。例如,我們訂單按運貨費降序排列,效果如下所示:
解決方案
方案一:直接通過SQL語句進行排序,如修改數據集SQL語句為:SELECT * FROM 訂單 order by 運貨費 desc。
方案二:通過設置數據列的高級屬性來實現排序效果,本節詳細介紹該方案的用法。
實現步驟
打開報表
打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\DetailReport\Details_4.cpt
排序設置
選中訂單ID數據列單元格,點擊高級按鈕或者雙擊單元格,選擇高級標籤,出現高級設置對話框,在排列順序中選擇降序,公式為運貨費。如下圖所示
注:由於單元格的計算順序,高級排序需要設置在單元格的父格上,如這裡的訂單ID,在取訂單ID時就根據運貨費字段的值進行降序排列。
結果集篩選
問題描述
我們只想顯示其中的N條數據。例如,我們只想顯示運貨費最多的前10條訂單記錄或者最少的10條訂單記錄,效果如下:
解決方案
通過設置數據列的高級屬性中的結果集篩選來讓其只顯示N個數據。
實現步驟
打開報表
取某一範圍的數據往往與排序結合使用,如取運貨費最大的10條數據,則先使訂單記錄按照運貨費降序排列,然後取前10條便可。
打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\DetailReport\Details_5.cpt
設置前N個
選中訂單ID數據列單元格,點擊高級按鈕或者雙擊單元格,選擇高級標籤,出現高級設置對話框,在結果集篩選中選擇前N個,N設為10,即顯示前10條數據,如下圖所示
注:由於單元格的計算順序,結果集篩選需要設置在單元格的父格上,如這裡的訂單ID,直接取得前10條訂單ID。