下面就通過數據分析軟件FineReport來簡單介紹一下。
工具/原料
數據分析軟件FineReport7.1.1
大小:148.2M 適用平臺:windows/linux
行分欄
問題描述
有時我們會遇到列數很少,但是擴展出很多行的報表,這種報表窄而長,預覽或打印時會有很大的一片空白區域,不美觀且浪費紙張。為了節省空間、增加美觀性,FineReport報表可以通過分欄將報表進行行方向或者列方向的分欄顯示,如下圖行分欄後效果,數據是從上到下擴展,超過20行,就在第2列中顯示,並且每列數據都有一個小標題,所有數據有一個大標題。
示例
數據準備
新建一張模板,新建數據集ds1:SELECT * FROM [人員變動表]。
模板設計
如下圖,在報表主體上設計報表:
其中B3單元格的父格為C3,公式seq作用是對員工進行排序。
未分欄預覽
保存模板,預覽模板,如下圖,可以報表每頁右側都有很多的空白區域,浪費空間:
分欄設置
如上圖,報表右側還有很多空白區域,那麼就可以設置行分欄,將左側超過固定行的數據挪到右側。
這裡我們設置每一欄顯示20行數據,不包括標題,以此類推。
就可以在菜單欄中,選擇模板>報表分欄,設置為行分欄,超過20行時進行分欄,參與分欄的數據從左上角的A3到右下角的E3,故在分欄數據中填寫A3:E3,如下圖:
超過X行分欄
超過行分欄是指縱向擴展的數據超過固定行數就進行行分欄,其中超過行分欄的數字計算公式為:
超過行分欄的數字=(分欄數據中結束分欄行序號-開始分欄行序號+1)*倍數,標題行不參數計算
如上圖,分欄區域中分欄數據位A3到E3,結束分欄行序號和開始分欄行序號均為3,示例要求每個欄位顯示20行數據,每條數據只佔一行,所以倍數為20,那麼:
超過行分欄的數字=(3-3+1)*20=20
分欄成X列
分欄成x列與超過X行分欄效果一樣,都是設置每一欄中數據顯示多少行,超過x行分欄是固定每一欄位的行數,欄數不確定,分欄成x列是指所有的數據分成固定欄,每一欄中數據的行數根據數據總行數確定,如示例中,不包括標題,數據總共有407行,那麼如果分欄成12列,那麼每一欄的數據行數=407/12(如果不能整除,則向上取整)=35,如下圖:
複製行序列
複製行序列是指在分欄時將該行復製作為每個欄位的標題,因此其一般應用於單元格是標題的行,複製行序號的行不參與分欄。
另:報表設計時,大標題必須要覆蓋整個分欄區域,如示例中的“各分公司員工勞動關係詳表”(大標題)所在的單元格所在區域必須包含到E1單元格,如果沒有包含到E1單元格,那麼大標題就不會跟隨擴展顯示在所有數據中間,而是顯示在第一欄數據的中間,如下圖:
分欄時的特別要求
縱向擴展時,由於欄數不定,設置上面的分欄後,一頁可能會顯示出多欄,甚至最右邊的欄會顯示不全,而我們往往希望每頁能夠固定顯示兩欄。
此時我們需要保證,設計報表時,左側設計報表所佔的總列寬,需要跟右側所在報表範圍內的空白大小基本相同,就可顯示2欄了,如果模板樣式不好調,可以調整頁面大小。
如果需要顯示3欄,則要保證報表範圍內(分頁線之間)能夠分成3份等寬。
列分欄
問題描述
數據是橫向擴展的,超過一頁的數據會顯示在下一頁,而每頁下面會有很大的一片空白區域,不美觀且浪費紙張。希望在一頁中第一行擴展滿後自動到下一行繼續擴展。
可以使用列分欄來實現這種橫向擴展自動換行的效果,如下圖數據是從左到右擴展,顯示完8天的數據之後自動到下面繼續擴展。
數據準備
新建模板,新建數據集ds1:SELECT * FROM 公司股票。
模板設計
在報表主體設計報表樣式,如下圖:
所有的數據列均設為橫向擴展(默認為縱向擴展),數據列的擴展請查看數據的擴展,seq公式的上父格設置為B3。
未分欄預覽
保存報表,預覽模板,如下圖,可以看到數據每頁只能顯示9列,下方有很多空白地方,浪費空間:
分欄設置
上圖可以看到每頁能顯示9列數據,除去標題列,只能顯示8列數據,那麼我們這裡就可以設置每一欄顯示8列,超過的到下一欄顯示,以此類推。
就可以在菜單欄中,選擇模板>報表分欄,設置為列分欄,超過8列時進行分欄,參與分欄的數據從B2到B8,故在分欄數據中填寫B2:B8,如下圖:
超過X列分欄
超過列分欄是指橫向擴展的數據超過固定列數就進行列分欄,其中超過列分欄的數字計算公式為:
超過列分欄的數字=(分欄數據中結束分欄列序號-開始分欄列序號+1)*倍數,標題列不參數計算
如上圖,分欄區域中分欄數據位B2到B8,結束分欄列序號和開始分欄列序號均為2(即B列),示例要求每個欄位顯示8列數據,每條數據只佔一列,所以倍數為8,那麼:
超過列分欄的數字=(2-2+1)*8=8
分欄成x列
分欄成x列與分欄成X行原理一致,這裡不再贅述。
複製列序列
複製列序列是指在分欄時將該列複製作為每個欄位的標題,因此其一般應用於單元格是標題的列,複製列序號的行不參與分欄。
分欄時的特別要求
由於行數不定,設置上面的分欄後,一頁肯定會顯示出多欄,甚至最下邊的欄會顯示不全,此時我們需要保證,設計報表時,上方設計報表所佔的總行高,需要跟下方所在報表範圍內的空白大小成為倍數的關係,就可顯示幾欄了,可以通過頁面設置來調整報表大小。
注:報表設計時,大標題必須要覆蓋整個分欄區域,如示例中的“某公司2~4月份股票行情”(大標題)所在的單元格所在區域必須包含到B1單元格,如不覆蓋到分欄區域的最大區域,效果與行分欄中類似。
卡片分欄
描述
上面兩節均是介紹了列表和分組表的分欄效果,但是對於卡片這種每一條數據均有一個小標題或大標題的模板來說,我們又該如何進行分欄呢?
數據準備
新建一張模板,新建數據集ds1:select * from 僱員
模板設計
如下圖所示設置模板,其中小標題列的第一個單元格A3和大標題單元格A1的父格設置為僱員ID所在單元格B3,並添加一個空白行和一個空白列,其中空白行的首個單元格A7和空白列的首個單元格D1的父格均設置為A3:
未分欄預覽
保存模板,點擊分頁預覽,可看到如下效果,每個員工的信息形成一個完整卡片,也就是每條記錄都有一個大標題和小標題:
分欄設置
上述模板預覽效果可以看出該模板時縱向擴展,故分欄選擇行分欄。
上述模板設計中可以看出,每一位員工信息佔了7行4列(為了使每位員工信息有一定的空白間隔,我們使用了空白行與空白列),第一二行是大標題行,第一列是小標題所在單元格,但由於每條記錄都帶有大標題和小標題,故可以將大小標題看成是數據的一部分,所以是7行4列,而不是5行3列;
若我們希望每欄顯示4位員工信息(7行*4=28行),超過的到下一欄(卡片是縱向擴展,故下一欄是指下一列)顯示,以此類推。
就可以在菜單欄中,選擇模板>報表分欄,設置為行分欄,超過28行時進行分欄,參與分欄的數據從左上角的A1(大標題開始的單元格)到右下角的D7,故在分欄數據中填寫A1:D7,因為大小標題行已經作為分欄數據,所以重複行序列為空,如下圖:
超過X行分欄
類似於上兩節中的行分欄和列分欄,卡片分欄的超過行分欄數字也有公式,如下:
超過行/列分欄的數字=(分欄數據中結束分欄行/列序號-開始分欄行/列序號+1)*倍數
如上示例,結束分欄行序號為7,開始分欄行序號為1,要求每個欄位顯示4為員工信息,故倍數為4,所以
超過行分欄的數字=(7-1+1)*4=28
保存與預覽
保存模板,點擊分頁預覽,效果如下圖
組內分欄
描述
組內分欄是指在每個組的內部對組內的數據進行分欄,如下圖所示:
數據準備
新建一張模板,添加一個內置數據集,數據如下圖:
模板設計
如下圖所示設計模板:
B4單元格為縱向擴展,D4和D5單元格為橫向擴展,其他父格設置均為默認。
分欄設置
點擊模板>報表分欄,開啟分欄,選擇列分欄,分欄成2行,分欄數據位為組內數據,即D4和D5,複製列序列為第3列,是組內數據的標題,勾選補充空白列:
注:行分欄的設置過程類似。
效果查看
點擊分頁預覽就能看到如上圖的效果。