FacebookTwitterLineHatena

靈活性是衡量自定義報表軟體功能的基本尺度,作為一款自定義功能備受推崇的報表軟體,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會自動將該站點下面的所有多維資料庫載入顯示在下拉列表中,選中需要連接的資料庫即可,如下圖:

SAP HANA

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腳本進行校驗等

數據提交校驗方式2

在填報中還可以自定義填報樣式,如填報凍結、填報居中等,進行填報功能定義,實現填報聯動、多個單元綁定一個欄位、動態改變填報資料庫表。空白數據不入庫、上傳文件至資料庫並下載、自定義添加刪除行按鈕等。

圖表自定義

圖表標題自定義

我們可以點擊圖表工具欄中的圖表屬性表-樣式>標題,來設置標題樣式,如下圖:

如上圖我們可以設置標題是否可見,若顯示標題的話可以設置標題的內容,且標題內容可以是固定的文本,如上圖,直接在文本框中輸入標題,也可以使用公式定義動態的標題。

點擊公式按鈕,便可以根據需要定義動態的標題了,通常與參數結合定義,如下圖:

若地區參數值為「華北」,那麼圖表的標題就會動態的顯示為「華北地區產品銷量」。

可以設置標題文本的字體、字形、字型大小、顏色,如設置為「宋體、加粗、12號」,則效果如下:

可以設置標題左對齊,居中,右對齊,默認對齊方式為居中。

可以標題添加邊框,並設置邊框樣式,包括線型,顏色,是否圓角邊框,如:設置標題邊框我細線型,顏色為紅色,使用圓角邊框,效果如下:

設置邊框樣式

對標題的背景進行設置,如設置標題背景為黃色,透明度為50%,效果如下:

標題背景

圖表圖例自定義

我們可以點擊圖表屬性面板中的圖表屬性表-樣式>圖例,來設置圖例樣式,如下圖:

圖表圖例自定義

如上圖可以自定義是否顯示圖例,默認情況是顯示圖例的。

可以設置圖例標籤文字的字體、字形、字型大小。

可以設置圖例顯示在圖表的哪個位置,有靠上,靠下,靠左,靠右四個選項,默認為靠右。設置圖例的邊框樣式,默認為無邊框,形同於標題邊框。設置圖例區域的背景以及透明度,形同於標題背景。

圖表系列

像柱形圖中的每一個柱子、折線圖中的每條折線等都表示一個系列,我們可以點擊圖表工具欄中圖表屬性表-樣式>系列來設置系列樣式

系列的配色可在下拉框中選擇圖表預定義樣式中設置好的所有樣式,默認為圖表預定義樣式中的默認選項,也可以自定義。

圖表標籤

標籤是指在web端查看圖表時,圖表系列上面的顯示內容、格式和位置。選中圖表,點擊圖表屬性表-樣式>標籤,勾選標籤前面的複選框,勾選需要顯示的內容,並設置格式,如下圖:

圖表坐標軸自定義

圖表中包含兩種坐標軸:分類軸與值軸,如下圖:

分類軸:非數值,反應數據是按照什麼分類顯示的。

值軸:數值,反應了系列值的大小。非組合圖只有一條主值軸;組合圖表可以根據需要定義第二值軸。

由於分類軸是非數值數據,而值軸是數值數據,因此這兩種坐標軸有著不同的屬性。

自定義圖表背景

如下圖,一張圖表有四個不同區域的概念:整個圖表區域(黑色框表示的範圍)、繪圖區(天藍色背景表示的範圍)、標題區(紅色背景表示的範圍)及圖例區(紅色虛線框表示的範圍)。

我們可以點擊圖表屬性表的圖表屬性表-樣式,來對這四個區域分別設置其邊框、背景等屬性,標題背景在標題標籤裡面,圖例背景在圖例裡面,繪圖區和圖表區在背景裡面

圖表數據表自定義

若用戶相同時查看數據和圖表,可以通過對數據表進行設置,而不用將數據拖曳至單元格中,並且數據與分類軸是一一對應的,方便用戶查看數據。

選中圖表,點擊圖表屬性面板中的圖表屬性表-樣式>數據表,勾選數據表,即可在圖表下方顯示數據表,如下圖:

圖表數據表自定義
圖表分析線自定義
在FineReport中可以自定義趨勢線、警戒線來實現數據提示。

定義趨勢線來查看數據的走勢;
自定義趨勢線
給圖表添加多條警戒線來實現預警效果:
自定義警戒線

報表自定義功能綜合使用示例

示例1

示例2

喜歡這篇文章嗎?歡迎分享按讚,給予我們支持和鼓勵!

熱門文章推薦

立即試用,可獲取更多 報表範本和案例

免費試用