數據分析軟件FineReport教程:[25]報表分欄?

下面就通過數據分析軟件FineReport來簡單介紹一下。

工具/原料

數據分析軟件FineReport7.1.1

大小:148.2M 適用平臺:windows/linux

行分欄

問題描述

有時我們會遇到列數很少,但是擴展出很多行的報表,這種報表窄而長,預覽或打印時會有很大的一片空白區域,不美觀且浪費紙張。為了節省空間、增加美觀性,FineReport報表可以通過分欄將報表進行行方向或者列方向的分欄顯示,如下圖行分欄後效果,數據是從上到下擴展,超過20行,就在第2列中顯示,並且每列數據都有一個小標題,所有數據有一個大標題。

數據分析軟件FineReport教程:[25]報表分欄

示例

數據準備

新建一張模板,新建數據集ds1:SELECT * FROM [人員變動表]。

模板設計

如下圖,在報表主體上設計報表:

其中B3單元格的父格為C3,公式seq作用是對員工進行排序。

數據分析軟件FineReport教程:[25]報表分欄

未分欄預覽

保存模板,預覽模板,如下圖,可以報表每頁右側都有很多的空白區域,浪費空間:

數據分析軟件FineReport教程:[25]報表分欄

分欄設置

如上圖,報表右側還有很多空白區域,那麼就可以設置行分欄,將左側超過固定行的數據挪到右側。

這裡我們設置每一欄顯示20行數據,不包括標題,以此類推。

就可以在菜單欄中,選擇模板>報表分欄,設置為行分欄,超過20行時進行分欄,參與分欄的數據從左上角的A3到右下角的E3,故在分欄數據中填寫A3:E3,如下圖:

數據分析軟件FineReport教程:[25]報表分欄

超過X行分欄

超過行分欄是指縱向擴展的數據超過固定行數就進行行分欄,其中超過行分欄的數字計算公式為:

超過行分欄的數字=(分欄數據中結束分欄行序號-開始分欄行序號+1)*倍數,標題行不參數計算

如上圖,分欄區域中分欄數據位A3到E3,結束分欄行序號和開始分欄行序號均為3,示例要求每個欄位顯示20行數據,每條數據只佔一行,所以倍數為20,那麼:

超過行分欄的數字=(3-3+1)*20=20

分欄成X列

分欄成x列與超過X行分欄效果一樣,都是設置每一欄中數據顯示多少行,超過x行分欄是固定每一欄位的行數,欄數不確定,分欄成x列是指所有的數據分成固定欄,每一欄中數據的行數根據數據總行數確定,如示例中,不包括標題,數據總共有407行,那麼如果分欄成12列,那麼每一欄的數據行數=407/12(如果不能整除,則向上取整)=35,如下圖:

數據分析軟件FineReport教程:[25]報表分欄

複製行序列

複製行序列是指在分欄時將該行復製作為每個欄位的標題,因此其一般應用於單元格是標題的行,複製行序號的行不參與分欄。

另:報表設計時,大標題必須要覆蓋整個分欄區域,如示例中的“各分公司員工勞動關係詳表”(大標題)所在的單元格所在區域必須包含到E1單元格,如果沒有包含到E1單元格,那麼大標題就不會跟隨擴展顯示在所有數據中間,而是顯示在第一欄數據的中間,如下圖:

數據分析軟件FineReport教程:[25]報表分欄

分欄時的特別要求

縱向擴展時,由於欄數不定,設置上面的分欄後,一頁可能會顯示出多欄,甚至最右邊的欄會顯示不全,而我們往往希望每頁能夠固定顯示兩欄。

此時我們需要保證,設計報表時,左側設計報表所佔的總列寬,需要跟右側所在報表範圍內的空白大小基本相同,就可顯示2欄了,如果模板樣式不好調,可以調整頁面大小。

如果需要顯示3欄,則要保證報表範圍內(分頁線之間)能夠分成3份等寬。

數據分析軟件FineReport教程:[25]報表分欄

列分欄

問題描述

數據是橫向擴展的,超過一頁的數據會顯示在下一頁,而每頁下面會有很大的一片空白區域,不美觀且浪費紙張。希望在一頁中第一行擴展滿後自動到下一行繼續擴展。

可以使用列分欄來實現這種橫向擴展自動換行的效果,如下圖數據是從左到右擴展,顯示完8天的數據之後自動到下面繼續擴展。

數據分析軟件FineReport教程:[25]報表分欄

數據準備

新建模板,新建數據集ds1:SELECT * FROM 公司股票。

模板設計

在報表主體設計報表樣式,如下圖:

所有的數據列均設為橫向擴展(默認為縱向擴展),數據列的擴展請查看數據的擴展,seq公式的上父格設置為B3。

數據分析軟件FineReport教程:[25]報表分欄

未分欄預覽

保存報表,預覽模板,如下圖,可以看到數據每頁只能顯示9列,下方有很多空白地方,浪費空間:

數據分析軟件FineReport教程:[25]報表分欄

分欄設置

上圖可以看到每頁能顯示9列數據,除去標題列,只能顯示8列數據,那麼我們這裡就可以設置每一欄顯示8列,超過的到下一欄顯示,以此類推。

就可以在菜單欄中,選擇模板>報表分欄,設置為列分欄,超過8列時進行分欄,參與分欄的數據從B2到B8,故在分欄數據中填寫B2:B8,如下圖:

數據分析軟件FineReport教程:[25]報表分欄

超過X列分欄

超過列分欄是指橫向擴展的數據超過固定列數就進行列分欄,其中超過列分欄的數字計算公式為:

超過列分欄的數字=(分欄數據中結束分欄列序號-開始分欄列序號+1)*倍數,標題列不參數計算

如上圖,分欄區域中分欄數據位B2到B8,結束分欄列序號和開始分欄列序號均為2(即B列),示例要求每個欄位顯示8列數據,每條數據只佔一列,所以倍數為8,那麼:

超過列分欄的數字=(2-2+1)*8=8

分欄成x列

分欄成x列與分欄成X行原理一致,這裡不再贅述。

複製列序列

複製列序列是指在分欄時將該列複製作為每個欄位的標題,因此其一般應用於單元格是標題的列,複製列序號的行不參與分欄。

分欄時的特別要求

由於行數不定,設置上面的分欄後,一頁肯定會顯示出多欄,甚至最下邊的欄會顯示不全,此時我們需要保證,設計報表時,上方設計報表所佔的總行高,需要跟下方所在報表範圍內的空白大小成為倍數的關係,就可顯示幾欄了,可以通過頁面設置來調整報表大小。

注:報表設計時,大標題必須要覆蓋整個分欄區域,如示例中的“某公司2~4月份股票行情”(大標題)所在的單元格所在區域必須包含到B1單元格,如不覆蓋到分欄區域的最大區域,效果與行分欄中類似。

卡片分欄

描述

上面兩節均是介紹了列表和分組表的分欄效果,但是對於卡片這種每一條數據均有一個小標題或大標題的模板來說,我們又該如何進行分欄呢?

數據分析軟件FineReport教程:[25]報表分欄

數據準備

新建一張模板,新建數據集ds1:select * from 僱員

模板設計

如下圖所示設置模板,其中小標題列的第一個單元格A3和大標題單元格A1的父格設置為僱員ID所在單元格B3,並添加一個空白行和一個空白列,其中空白行的首個單元格A7和空白列的首個單元格D1的父格均設置為A3:

數據分析軟件FineReport教程:[25]報表分欄

未分欄預覽

保存模板,點擊分頁預覽,可看到如下效果,每個員工的信息形成一個完整卡片,也就是每條記錄都有一個大標題和小標題:

數據分析軟件FineReport教程:[25]報表分欄

分欄設置

上述模板預覽效果可以看出該模板時縱向擴展,故分欄選擇行分欄。

上述模板設計中可以看出,每一位員工信息佔了7行4列(為了使每位員工信息有一定的空白間隔,我們使用了空白行與空白列),第一二行是大標題行,第一列是小標題所在單元格,但由於每條記錄都帶有大標題和小標題,故可以將大小標題看成是數據的一部分,所以是7行4列,而不是5行3列;

若我們希望每欄顯示4位員工信息(7行*4=28行),超過的到下一欄(卡片是縱向擴展,故下一欄是指下一列)顯示,以此類推。

就可以在菜單欄中,選擇模板>報表分欄,設置為行分欄,超過28行時進行分欄,參與分欄的數據從左上角的A1(大標題開始的單元格)到右下角的D7,故在分欄數據中填寫A1:D7,因為大小標題行已經作為分欄數據,所以重複行序列為空,如下圖:

數據分析軟件FineReport教程:[25]報表分欄

超過X行分欄

類似於上兩節中的行分欄和列分欄,卡片分欄的超過行分欄數字也有公式,如下:

超過行/列分欄的數字=(分欄數據中結束分欄行/列序號-開始分欄行/列序號+1)*倍數

如上示例,結束分欄行序號為7,開始分欄行序號為1,要求每個欄位顯示4為員工信息,故倍數為4,所以

超過行分欄的數字=(7-1+1)*4=28

保存與預覽

保存模板,點擊分頁預覽,效果如下圖

數據分析軟件FineReport教程:[25]報表分欄

組內分欄

描述

組內分欄是指在每個組的內部對組內的數據進行分欄,如下圖所示:

數據分析軟件FineReport教程:[25]報表分欄

數據準備

新建一張模板,添加一個內置數據集,數據如下圖:

數據分析軟件FineReport教程:[25]報表分欄

模板設計

如下圖所示設計模板:

B4單元格為縱向擴展,D4和D5單元格為橫向擴展,其他父格設置均為默認。

數據分析軟件FineReport教程:[25]報表分欄

分欄設置

點擊模板>報表分欄,開啟分欄,選擇列分欄,分欄成2行,分欄數據位為組內數據,即D4和D5,複製列序列為第3列,是組內數據的標題,勾選補充空白列:

注:行分欄的設置過程類似。

數據分析軟件FineReport教程:[25]報表分欄

效果查看

點擊分頁預覽就能看到如上圖的效果。

教程, 軟件, 數據, 報表, 分欄,
相關問題答案