目錄
靈活性是衡量自定義報表軟體功能的基本尺度,作為一款自定義功能備受推崇的報表軟體,FineReport在報表的自定義性上有什麼特殊表現,用FineReport製作自定義報表又需要怎樣的步驟呢?下面,讓我們深度解讀這一款自定義報表工具——FineReport。
用FineReport製作自定義報表需要通過以下四個步驟:
1、新建數據連接:在製作模板之前首先要確保設計者知道存儲數據的資料庫類型、資料庫地址、訪問資料庫的用戶名密碼,然後在FineReport設計器中新建一個數據連接,建立資料庫與設計器的交互橋樑;
2、新建模板與數據集:數據連接創建好之後,就需要進行模板的添加了,數據連接是用於整個工程的,並沒有實質的將數據從資料庫中取出來,故還需要在特定模板中新建數據集,通過數據連接從資料庫中取數;
3、模板設計:數據準備完成之後,就是進行模板的設計了。自定義模板設計又分為報表設計、參數設計、圖表製作設計和填報設計四個部分,這四個部分是FineReport模板的幾大使用方式,報表設計是純粹的數據展示,參數設計是動態查詢數據,圖表製作設計是使用圖表來展示數據,填報設計是錄入數據,將數據寫入資料庫中,根據實際情況確定使用哪一張使用方式,或者聯合使用哪幾種使用方式;
模板預覽:模板設計完成之後,保存模板至工程目錄下面,即可預覽在web端查看模板效果。
數據連接
製作報表前首先需要定義數據來源,實際用戶系統最長見的就是數據保存在資料庫中,並且在不斷更新中,使用資料庫數據來製作報表,並且報表內容會隨著資料庫的更新而更新。
FineReport天然支持這一點,只需要在伺服器>定義數據連接中定義需要連接的資料庫,就可以自定義查詢語句查詢出需要的數據,從而製作自定義報表。
數據連接存儲在工程中,當用戶執行需要訪問資料庫的操作時這些連接被激活。
一個報表工程可以定義多個資料庫連接,所有信息都保存在appName/WEB-INF/resources/datasource.xml配置文件中。
可以通過JDBC、JNDI、SAP、XMLA和FineBI五種方式自定義資料庫連接,當報表執行時需要訪問資料庫時這些連接才會被激活。
JDBC連接資料庫
JDBC (Java Data Base Connectivity,Java資料庫連接)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問。
JNDI連接資料庫
JNDI(Java Naming and Directory Interface)是一個應用程序設計的API,為開發人員提供了查找和訪問各種命名和目錄服務的通用、統一的介面,類似JDBC都是構建在抽象層上。
通過JNDI方式定義數據連接,首先在應用伺服器配置好JNDI,然後在設計器中直接調用JNDI的名字,選擇連接資料庫所需要的驅動程序等操作,即可成功使用JNDI連接,連接步驟如下:
設計器中連接JNDI
新建資料庫,選擇JNDI方式連接
編輯JNDI名字和上下文內容等
輸入JNDI的名字與Web應用定義的JNDI名字相同,並且在上下文內選擇相應Web伺服器的驅動程序及連接資料庫的URL,如下圖:
各種Web伺服器的JNDI數據源調用方式有所區別
其他屬性
JNDI連接數據源還有一些其他屬性可以設置。點擊上圖右側的其他屬性即可彈出設置界面:
SAP連接資料庫
與SAP系統進行連接,需要導入SAP介麵包和本地庫,並確保運行的JVM能夠找到介麵包和本地庫。
主機名:區域網中已配置的SAP的主機名稱,也可以寫該機器的IP地址。
System Number:SAP系統中設置的屬性,用於交互的埠號,一般來說是00,具體根據SAP系統來定。
客戶端:SAP 系統管理的業務和數據的最大有效集合,也是SAP系統的一個屬性,具體根據SAP系統決定。
點擊測試連接,如果提示連接成功則表示數據連接新建好了,點擊確定退出數據連接設置面板。
連接成功之後就可以在伺服器數據集、模板數據集等地方使用該數據連接,通過該數據連接從SAP系統中取數。
XMLA數據連接
多維資料庫(Multi Dimensional Database,MDD),簡單來說,就是將數據存放在一個n維數組中,而不是像關係資料庫那樣以記錄的形式存放。因此它存在大量稀疏矩陣,人們可以通過多維視圖來觀察數據。多維資料庫增加了一個時間維,與關係資料庫相比,它的優勢在於可以提高數據處理速度,加快反應時間,提高查詢效率。
FineReport提供了XMLA數據連接的方式來與多維資料庫進行連接,建立橋樑,通過該橋樑,FineReport可以輕鬆獲取到多維資料庫中的數據轉換為二維表進行模板製作,數據分析。
FineReport多維資料庫XMLA數據連接支持市場上主流的SQLServer Analysis Services、Oracle Essbase和SAP HANA等等資料庫類型。
下面我們一一講解各類型多維資料庫的自定義連接方式。
SQLServer Analysis Services
SQLServer Analysis Services簡稱為SSAS,是指在內置計算支持的單個統一邏輯模型中,設計、創建和管理包含來自多個數據源(如關係資料庫)的詳細信息和聚合數據的多維結構。
XMLA數據連接參數配置界面上的資料庫類型選擇SQLServer Analysis Services,在URL輸入該資料庫所在站點地址,用戶名及密碼,然後點擊資料庫標籤後面的下拉選項,FineReport會自動將該站點下面的所有多維資料庫載入顯示在下拉列表中,選中需要連接的資料庫即可,如下圖:
點擊測試連接即表示連接成功。
Oracle Essbase
資料庫類型選擇Oracle Essbase,在URL輸入該資料庫所在站點地址,用戶名及密碼,然後點擊資料庫標籤後面的下拉選項,FineReport會自動將該站點下面的所有多維資料庫載入顯示在下拉列表中,選中需要連接的資料庫即可,如下圖:
SAP HANA
資料庫類型選擇SAP HANA,在URL輸入該資料庫所在站點地址,用戶名及密碼,然後點擊資料庫標籤後面的下拉選項,FineReport會自動將該站點下面的所有多維資料庫載入顯示在下拉列表中,選中需要連接的資料庫即可,如下圖:
XMLA數據連接建立好之後,就可以添加多維資料庫XMLA數據集。
FineBI數據連接
FineBI是帆軟公司自主研發的一款商業智能軟體,其在使用過程中也會生成cube。FineReport提供了單獨的FineBI連接方式,為FineReport和FineBI之間搭建橋樑。
打開設計器,點擊伺服器>定義數據連接,新增一個FineBI數據連接,在右側的面板中輸入相應參數配置,如下圖:
配置完成之後,點擊測試連接,連接成功即可。
FIneBI數據連接與XMLA數據連接類似,其添加數據集時,需要使用多維資料庫。
數據集
數據集是指從資料庫中將數據取出來,可直接應用於模板設計的數據展現集合,數據集按照其使用範圍可以分為伺服器數據集,模板數據集兩種。
FineReport提供了多種數據集定義方式滿足自定義報表數據集的需要。伺服器數據集在伺服器>伺服器數據集處定義,適用於整個伺服器上所有報表的數據集,其類型分為:資料庫查詢,內置數據集,文件數據集,SAP數據集,存儲過程,多維資料庫、關聯數據集以及樹數據集。
我們可以在在模板>模板數據集處或者數據集窗口處進行模板數據集自定義,此處數據集只適用於單張模板的數據集,具體類型同伺服器數據集相同。
模板數據集只對當前模板有效。
在設計器的數據窗口會顯示定義的所有數據集,包括模板數據集和伺服器數據集,如下圖:
數據集窗口可以對模板數據集進行增刪查詢,但是對伺服器數據集及存儲過程數據集只能進行預覽。
資料庫查詢
資料庫查詢定義數據集是FineReport自定義報表功能中一種比較常見的定義數據集方式。
SQL查詢是指從定義好的資料庫連接中,也就是數據源中使用SQL語句來選擇我們所需要的數據欄位,一般是直接對數據源中的資料庫表直接進行操作。在設計器中我們把數據源分為兩種,一種是伺服器數據集,一種是報表數據集,兩者被引用的範圍不一樣。
使用sql,選擇好數據源後,我們就可以使用SQL對資料庫表進行操作,選中查詢編輯器,在其中輸入SQL語句即可進行數據集定義。
內置數據集
內置數據集可分為伺服器內置數據集和報表內置數據集。伺服器內置數據集,是指在伺服器數據集中新建一個類似資料庫表的原表,可作為伺服器的數據源來設計報表。
自定義添加內置數據集的方法為:
點擊模板數據集下面的加號,選擇內置數據集。
設置完列名和數據類型後,點擊插入行刪除行,可以對數據進行操作。
設置完後,可以看到模板數據集中增加了一個數據集。
文件數據集
文件數據集是指以txt文本文件、Excel文件和XML文件中的數據為數據集,將這些文件中的數據載入進行,並以二維表的結構展示在數據集當中,以供模板使用。
SAP數據集
在SAP數據連接中建立好SAP的一個連接SAP2,接下來就可以通過該數據連接建立SAP數據集了,如果沒有建立數據連接,請先建立一個SAP數據連接
新建好數據連接之後,再在模板中添加一個模板數據集或者是伺服器數據集,這裡我們以模板數據集為例,直接在模板的資料庫查詢面板中,點擊按鈕,選擇SAP數據集,或者是點擊模板>模板數據集,選擇SAP數據集,進入SAP數據集配置界面:
SAP數據取數的方式有三種:自定義、簡單通用查詢、通用查詢
存儲過程
存儲過程,就是直接將存儲過程作為數據集,不需要在資料庫查詢處去調用存儲過程。FineReport支持全部資料庫的存儲過程作為數據集並且定義方法都相同。
點擊模板>模板數據集或者直接在數據集面板中,點擊「+」,切換到oracle資料庫所在的數據連接,雙擊所需要添加的存儲過程,如下圖:
多維資料庫
FineReport連接多維資料庫,首先要通過數據連接將多維資料庫與FineReport連接起來,也就是我們前面所說的XMLA數據連接,那麼下面就需要在數據連接的基礎上新建多維資料庫XMLA數據集,用於模板設計。
新建好XMLA數據連接之後,在模板數據集面板中點擊添加按鈕,新建一個多維資料庫,進入多維資料庫XMLA數據集配置界面,XMLA數據集查詢取數方式包括簡單通用查詢和自定義MDX查詢兩種,如下圖
關聯數據集
使用FineReport的自定義報表功能進行關聯數據集的使用場景:
情形一:一張模板定義了兩個數據集ds1和ds2,分別是從oracle和sqlserver中取數,想通過參數控制報表數據是從ds1取的還是ds2取的;
情形二:有一張模板,裡面的樣式都是一樣的,但是數據都是取自最終客戶各個子公司自身的資料庫,要求各子公司訪問的是各子公司自己的數據;
情形三:數據集ds1、ds2來自不同的數據源,結構相同,需要將量表中的數據合并起來。
以上情形都可以使用關聯數據集來實現,下面我們就以情形一為例說明關聯數據集的使用方法。
定義數據集ds1和ds2,分別來自資料庫oracle及sqlserver;
在數據集面板中新建>關聯數據集;
此時將會列出該報表所有可用的報表數據集、伺服器數據集和存儲過程,勾選需要的數據集,如這裡的ds1、ds2;
並且添加條件,如ds1對應的條件是$db=”oracle”,即當參數db為oracle的時候就用ds1;
同樣可以給ds2添加條件$db=”sqlserver”,當參數db為sqlserver的時候就用ds2。
樹數據集
在資料庫中常常可以看到一種表結構,其表中包含了id與parentid兩個欄位或者某一個欄位的長度有一定規律,這種表結構就存在著一種層級關係,通過下拉樹或者摺疊樹來顯示層級結構,比如說部門的層級結構,如下圖:
那麼如何通過將數據表中的二維結構展現出這種樹狀的層級關係呢?FineReport提供了樹數據集的概念,為控制項綁定樹數據集,web端查看時就會自動生成樹形層級結構。
在數據集面板中新建一個數據集ds1:SELECT * FROM [公司部門];
在上面的ds1數據集的基礎上創建一個樹數據集,將公司部門的層級結構顯示出來。
在數據集面板中點擊添加按鈕,選擇樹數據集,
樹數據集來源於上面創建的ds1數據集,公司部門中有一個部門ID和上級ID,故可以使用依賴所選數據集的父標記欄位構建樹,如下圖:
如果數據表中的欄位沒有父級欄位,而是通過欄位的長度來分辨其級別,如下圖,公司部門的部門ID欄位,其欄位長度不一致,但是存在一定的規律,截止到第一個數字表示第一層級部門的部門ID,截止到第二個數字表示第二層級部門的部門ID,以此類推
我們再新建一個數據集,其數據集來源仍然是ds1,選擇依賴所選數據集的標記欄位的長度構建樹,原始標記欄位為部門ID,如下圖:
FineReport會自動識別部門ID欄位裡面的規律,效果與上面依賴所選數據集的父標記欄位構建樹的效果一致
模板設計
模板設計充分體現了FineReport報表強大的自定義報表功能。FineReport提供了豐富的控制項、參數、介面等因素支持自定義報表設計,滿足填報、報表展示等方面的自定義需求。
單元格屬性自定義
自定義擴展屬性
在自定義報表單元格屬性表-擴展屬性中,可以自定義單元格的父格、伸展性以及擴展後的數據伸展方向。
自定義單元格樣式
在單元格屬性表-樣式自定義中,可以自定義單元格樣式,進行單元格的格式、對齊、字體、邊框、背景等的設置。
在自定義樣式-格式中可以自定義數據的顯示形態和顯示格式,進行常規、數字、貨幣、百分比、科學計數、日期型、時間型、文本型等格式的設置
在自定義樣式-對齊中可以自定義單元格中數據的對其方式、圖片布局、文本控制、文本方向、縮進、間距等的設置。
在自定義樣式-字體中可以自定義單元格中數據的字體大小、顏色、斜體、加粗、下劃線、刪除線、陰影、上下標的設置
在自定義樣式-邊框中可以自定義單元格的邊框,設置單元格的內外邊框的樣式和顏色。
在自定義樣式-背景中可以自定義單元格的背景,單元格的背景可以被設置為:無背景、顏色、紋理、圖案、圖片。漸變色等。
自定義單元格形態
在單元格屬性表-形態中,可以自定義形態設置,進行數據字典、條形碼、公式形態、金額線等定義。
在單元格屬性表-形態-數據字典中,可以自定義單元格數據的數據字典,進行包括數據類型、資料庫、模式、資料庫表、實際值和顯示值的設置。
在單元格屬性表-形態-條形碼中,可以自定義單元格中條形碼的顯示形態,設置條形碼的顯示類型、高度寬度和文本形態。
在單元格屬性表-形態-公式形態中,可以自定義單元格的公式,FineReport提供了多種函數類型、函數名和變數,方便用戶查找常用公式。FineReport提供的公式包括了幾乎所有的常用公式,例如比較常見的求和、平均值、計數、累計、時間、數組等函數,以及報表函數、邏輯函數、層次坐標函數等。
在單元格屬性表-形態-金額線中,可以自定義金額線的樣式,這是對於金額數字的專有定義設置,在這裡可以設置金額的整數部分和小數部分的位數。
自定義單元格其他屬性
單元格屬性表-其他屬性中可進行行高、列寬等的設置,以及列印/導出的單元格內容和背景的設置,分頁的定義也在這裡進行,自定義報表的分頁形式:行前分頁、行後分頁、列前分頁、列後分頁。
自定義報表樣式
FineReport報表設計器自身提供了多種自定義報表樣式的便捷按鈕,在這裡可以隨便選中行和列進行字體、顏色、報表前景、報表後景、對齊方式、圖表、圖片、懸浮方式的設置,可以進行合并和拆分單元格操作,進行數據列、普通文本、斜線、子報表的插入等。
在FineReport中還可以自定義凍結的行和列,即設置重複的行或列,設置成功後會有一個「H」的標誌。
選中需要自定義的區域,右鍵可以進行單元格元素、樣式、控制項、擴展屬性、形態、條件屬性、超級鏈接等的設置。
參數自定義
在FineReport中可以進行參數自定義以更好地輔助報表自定義設置。參數界面設置
如下:
還可以給參數type的下拉框控制項增加編輯後事件:點擊參數type的下拉框控制項,在屬性表的下方選擇事件面板,點擊增加編輯後事件。
FineReport提供了多種控制項幫助用戶進行參數自定義設置,參數表單頁面控制項類型包括以下幾種:
文本、標籤、按鈕、下拉框、下拉複選框、日期、複選框、數字、下拉樹、視圖樹、單選按鈕組、複選框組、文件、文本域、密碼、列表、網頁框和數據表。
如下圖,在參數界面上添加一個控制項:
參數表單頁面控制項類型包括以下幾種:
文本、標籤、按鈕、下拉框、下拉複選框、日期、複選框、數字、下拉樹、視圖樹、單選按鈕組、複選框組、文件、文本域、密碼、列表、網頁框和數據表。
控制項屬性可以設置控制項名稱,是否可用可見,樣式等等。基於控制項的功能不同,有些屬性是專有的,有些屬性是通用的。
通用屬性是指所有控制項均有的屬性,下面用表格詳細羅列出來所有控制項的通用屬性,使用意義以及該屬性是否可以同時在填報控制項和參數(表單)控制項中使用
在參數界面面板中,還可以設置參數在BS端的高度:
在我們的頁面中,參數界面是可以動態的顯示和隱藏的,效果如下圖
填報自定義
FineReport提供了多種填報控制項幫助用戶進行自定義填報設置。填報自定義的控制項和參數控制項種類基本相同,只是用法不同而已。在控制項種類上,填報頁面少了標籤控制項和數據表控制項,如下圖所示:
FineReport提供了多種數據提交校驗方式,如內置校驗、填報自定義校驗、強制提交、使用JS腳本進行校驗等
在填報中還可以自定義填報樣式,如填報凍結、填報居中等,進行填報功能定義,實現填報聯動、多個單元綁定一個欄位、動態改變填報資料庫表。空白數據不入庫、上傳文件至資料庫並下載、自定義添加刪除行按鈕等。
圖表自定義
圖表標題自定義
我們可以點擊圖表工具欄中的圖表屬性表-樣式>標題,來設置標題樣式,如下圖:
如上圖我們可以設置標題是否可見,若顯示標題的話可以設置標題的內容,且標題內容可以是固定的文本,如上圖,直接在文本框中輸入標題,也可以使用公式定義動態的標題。
點擊公式按鈕,便可以根據需要定義動態的標題了,通常與參數結合定義,如下圖:
若地區參數值為「華北」,那麼圖表的標題就會動態的顯示為「華北地區產品銷量」。
可以設置標題文本的字體、字形、字型大小、顏色,如設置為「宋體、加粗、12號」,則效果如下:
可以設置標題左對齊,居中,右對齊,默認對齊方式為居中。
可以標題添加邊框,並設置邊框樣式,包括線型,顏色,是否圓角邊框,如:設置標題邊框我細線型,顏色為紅色,使用圓角邊框,效果如下:
對標題的背景進行設置,如設置標題背景為黃色,透明度為50%,效果如下:
圖表圖例自定義
我們可以點擊圖表屬性面板中的圖表屬性表-樣式>圖例,來設置圖例樣式,如下圖:
如上圖可以自定義是否顯示圖例,默認情況是顯示圖例的。
可以設置圖例標籤文字的字體、字形、字型大小。
可以設置圖例顯示在圖表的哪個位置,有靠上,靠下,靠左,靠右四個選項,默認為靠右。設置圖例的邊框樣式,默認為無邊框,形同於標題邊框。設置圖例區域的背景以及透明度,形同於標題背景。
圖表系列
像柱形圖中的每一個柱子、折線圖中的每條折線等都表示一個系列,我們可以點擊圖表工具欄中圖表屬性表-樣式>系列來設置系列樣式
系列的配色可在下拉框中選擇圖表預定義樣式中設置好的所有樣式,默認為圖表預定義樣式中的默認選項,也可以自定義。
圖表標籤
標籤是指在web端查看圖表時,圖表系列上面的顯示內容、格式和位置。選中圖表,點擊圖表屬性表-樣式>標籤,勾選標籤前面的複選框,勾選需要顯示的內容,並設置格式,如下圖:
圖表坐標軸自定義
圖表中包含兩種坐標軸:分類軸與值軸,如下圖:
分類軸:非數值,反應數據是按照什麼分類顯示的。
值軸:數值,反應了系列值的大小。非組合圖只有一條主值軸;組合圖表可以根據需要定義第二值軸。
由於分類軸是非數值數據,而值軸是數值數據,因此這兩種坐標軸有著不同的屬性。
自定義圖表背景
如下圖,一張圖表有四個不同區域的概念:整個圖表區域(黑色框表示的範圍)、繪圖區(天藍色背景表示的範圍)、標題區(紅色背景表示的範圍)及圖例區(紅色虛線框表示的範圍)。
我們可以點擊圖表屬性表的圖表屬性表-樣式,來對這四個區域分別設置其邊框、背景等屬性,標題背景在標題標籤裡面,圖例背景在圖例裡面,繪圖區和圖表區在背景裡面
圖表數據表自定義
若用戶相同時查看數據和圖表,可以通過對數據表進行設置,而不用將數據拖曳至單元格中,並且數據與分類軸是一一對應的,方便用戶查看數據。
選中圖表,點擊圖表屬性面板中的圖表屬性表-樣式>數據表,勾選數據表,即可在圖表下方顯示數據表,如下圖:
圖表分析線自定義
在FineReport中可以自定義趨勢線、警戒線來實現數據提示。
定義趨勢線來查看數據的走勢;
給圖表添加多條警戒線來實現預警效果:
報表自定義功能綜合使用示例
示例1
示例2
喜歡這篇文章嗎?歡迎分享按讚,給予我們支持和鼓勵!