文|投稿
有人問,把Excel用到極致是一種什麼體驗?
在以前公司上班的時候,每天都要出報表,覺得很麻煩。於是就自己用Excel的函數、控制項、VBA等做了個自動化的範本。從此以後每天只需把資料扔到對應的檔案夾,打開新的檔刷新,就能輸出PDF給老闆。如果老闆說要最終資料,我2分鐘給出結果。要知道,從前做報表的前輩都是要做好幾個小時才能輸出的結果資料。
後來,資訊部的領導覺得我很能幹,把我挖去了報表開發組,說是組,但其實就我一個人,分了兩個新人,希望我組建一支高效的報表開發隊伍。ORZ…升是升職了,但任務量和壓力卻是無比巨大。以前我只要面對老闆一人,現在我要面對公司上下7個部門,每年近100多張報表的開發量,還不算特定資料問題的報表分析。
剛開始我寄希望於我強大的VBA技能,將一些固定需求寫腳本,後面只要導一導。但是架不住需求不斷在變,上一周還說要統計銷售任務報表,這一周又讓我將銷售任務報表和結果表合併,三個人每天都加班。
這時候,我知道依靠VBA無濟於事,投入成本和產出不成比例。另外就是Excel在處理比較大的資料集的時候,性能很差,並且經常崩潰,還得靠SQL處理。(雖然Excel2013及以上版本宣稱可以容納100+萬條記錄,但幾萬條資料就開始卡頓了)。
那既然大多資料處理都在SQL,那我就想應該有很多能和資料庫直接對接的報表製作軟體。於是網上搜索,期待有人已經做出來類似的工具能夠讓我直接使用。經過一個多星期的偵查,SPSS、SAS、cognos、水晶報表、foxtable、finereport等等各種報表分析工具出現在了我的眼前。經過下載試用、比較,因為我除去VBA和SQL,其他程式碼編寫能力太差,也沒有太多的時間去學習程式碼。於是,finereport報表軟體成了唯一的選擇。
從安裝、調試、優化記憶體佔用,到學習並做出第一張滿足我需求的範本,雖然花了一周的時間,但是我發現,FineReport報表軟體如果掌握技巧,報表開發完全KO Excel。(只是指效率方面)
此後,我又使用了一段時間(個人版隨便用,只是有併發限制),熟悉之後又開發了兩個自動化範本,花了兩天時間。遂和領導報備,評估了需求,溝通之後提交了採購計畫,讓帆軟方來安裝部署。一年內重新規劃了公司報表體系,統一製作自動化範本,現在每天只要處理2~3個疑難問題,更多時間轉戰資料採擷和分析。
好了,關於java報表軟體FineReport,賣了很多關子,下面詳細來說下。
首先,商業報表開發,為什麼需要SQL和報表軟體?
每個企業都有開發報表需求,小公司可能Excel應付了事,大公司就要上到ERP,CRM系統,系統裡的資料都要做成視覺化報表給上頭展示,報表體量大,資料量大,就要商業報表工具來實現半自動開發。
且隨著資料價值的不斷提升,需求越來越精細化和多元化,需要通過資料包表來發現一些問題,做資料分析。而且報表產品能減少重複製作報表的人力成本,提高獲取資料的效率,有了資料門戶雛形,大家知道去固定的地方獲取資料。
為什麼不用Excel VBA或自己開發?
以我自身的例子來看,很明顯VBA只能解決少量的個體需求。而開發一款基於資料庫的應用軟體系統,需要寫大量jsp/asp/php程式碼,基於資料庫的展示,查詢和錄入的網頁。我們評估過這項成本,這寫程式碼來實現資料展示(報表),資料查詢(參數)和資料錄入(填報)的網頁,不僅開發效率不高,而且專案交付後的維護工作量很大,修改程式碼的成本非常高。
用FineReport等java報表工具的的好處
做這些基於資料庫的展示,查詢和錄入的頁面,不再需要編寫程式碼,而是通過FineReport報表工具提供的範本設計器,拖拖拽拽就製作視覺化報表、能夠查詢資料的參數報表、提供資料錄入資料庫的填報頁面,然後將這些範本保存到FineReport伺服器指定的目錄下面。
當使用者透過流覽器遠端存取某個頁面範本,FineReport伺服器會把使用者指定的頁面範本自動解析成網頁,在流覽器裡面直接看。
幾個特性
- 零編碼,拖拽式操作,跟Excel一樣簡單
EXCEL+綁定資料列的操作介面、拖拽、資料列到對應儲存格;
無限行列擴展,多Sheet,跨Sheet計算完美相容Excel公式;
支援導入現有Excel表樣製作視覺化報表,而且無失真保留原有表公式。
之前軟妹有發過一文細緻的介紹了其一些特性
《這個工具能替代Excel,可惜90%的人都沒用過!》
多吹無意,舉例操作案例。
這是一張典型的能及時查詢的,包含圖表的交叉報表範本(比較簡單)。能查詢各個地區的銷售概況,並且表和圖的資料能跟隨變化。資料庫中資料有增加或減少,此張動態報表就能自動更新。
原理何在?下面將詳細介紹這張範本的製作、展示過程。
第一步:安裝+啟動finereport
去finereport台灣官網下安裝包,免費註冊,獲取激活碼啟動。
安裝很簡單,按照流程走,然後就會顯示這個介面。
第二步:新建範本與資料集
類似於Excel新建sheet,如下圖點擊創建一張空白範本。
新建資料集
資料集是FineReport專有的存儲透過資料連接從資料庫中取出來的資料,資料集是一個二維資料表,可直接在資料集中看到資料表中的欄位和資料。報表左側下方有範本資料集視窗,列出了該範本可用的所有範本資料集,點擊「加號」按鈕,增加範本資料集。
資料來源一般是資料庫,這裡假設已經和資料庫建立了連結。點擊資料庫查詢,新建資料集ds1,SQL語句為:
SELECT * FROM 銷量 where 地區=’${地區}’
這樣一個帶參數的SQL語句,這裡的地區是引數名字。在下方的引數面板中點擊刷新按鈕,便可以獲得資料集引數,給引數設定預設值“華東”,如下圖:
點擊SQL輸入框上面最左邊的預覽按鈕,如下圖所示:
在彈出的引數選項框中輸入引數「華東」,如下圖:
點擊「確定」,即可預覽地區的「華東」的資料:
同樣的方法,增加資料集ds2,SQL語句為:
SELECT 銷售員,sum(銷量) as 銷售總額 FROM 銷量 group by 銷售員
第三步:設計報表
範本設計
範本設計效果展示如下圖:
具體設計
標題:合併A1~D2儲存格,寫入:地區銷售概況。
邊框:首先我們先來選中從A3~D5這一片區域,點擊工具列中的按鈕,在系統彈出的邊框對話方塊中,選擇按鈕,同時添加內部和外部邊框。
斜線:合併A3、B3儲存格,右擊合併的儲存格選擇儲存格元素或者選中A3儲存格,在設計器右側選擇儲存格元素,選擇插入斜線。系統會彈出一個斜線編輯的對話方塊,在文本編輯方塊中要加入的內容:產品|銷售員|地區,可以透過添加空格來調整文字的位置。如下圖所示:
綁定數據列
將資料列拖拽至儲存格,並設定儲存格的屬性,設定位置及方法如下圖:
按照上圖方法,將下表中對應資料列拖入到儲存格中,在儲存格元素中進行資料設定 ,在儲存格屬性中設定擴展方向。
多資料集關聯
很多時候,範本的資料來自於兩個不同的資料集,要將不同資料集的資料建立聯繫,需要用到資料過濾。選擇D4儲存格,點擊設計器右側上方的儲存格元素面板中的過濾條件後的編輯或者按兩下D4儲存格,彈出資料列對話方塊,選擇過濾,如下圖:
打開過濾設定面板,添加如下過濾條件, 使得ds2中的「銷售員」資料列等於ds1中銷售員的值。
第四步:設定引數
多數情況下,需要顯示滿足一定條件的部分資料,這便需要用到引數。引數設計實際上就是一個動態的過濾資料的過程,便於使用者與資料能夠即時交互。FineReport內置了一個預設的引數介面,可在內置的介面中,調整引數的位置,並透過控制項設定得到各種不同的資料選擇方式。在此,我們在上張報表的基礎上介紹引數查詢介面的設計過程。
引數介面佈局
點擊引數介面,進入引數編輯介面,在新建範本與資料集章節,我們在ds1資料集中定義了引數「地區」。切換到引數介面後,可以在控制項設定的上方區域看到我們所有定義好的參數,點擊全部添加,將會使用預設的佈局形成引數介面。使用者可以根據需要將引數介面調整到自己喜歡的樣式。
注:伺服器資料集裡的引數不會出現在引數介面的右側。
引數控制項類型
引數控制項有點像Excel裡的控制項,有文本,有下拉清單等等。這裡將地區引數控制項類型改為下拉清單,如下圖:
選中下拉清單控制項,在右上方屬性工作表中,設定下拉清單的資料字典,選擇資料庫表>FRDemo>銷量,實際值和顯示值選擇列名,都為地區欄位:
第五步:製作圖表
圖表製作的方式和Excel很類似,選圖表,填資料,設定格式。
合併A7~D18儲存格,選擇功能表列上插入>儲存格元素>圖表,彈出圖表類型對話方塊,這裡選擇直條圖(新特性)>直條圖,點擊確定,如下圖所示:
選中圖表,在右側上方的儲存格元素面板中選擇資料,圖表資料來源使用儲存格資料。
分類軸輸入公式=B4;系列名和系列值,分別為=C3和=C4,如下圖:
點擊保存,圖表製作完成。
圖表擴展屬性
這裡只想讓圖表反映整體情況,所以應為不擴展,左、上父格均為無。選擇圖表,在設計介面右上方的儲存格屬性面板中設置左、上父格均為無,如下圖:
最後,報表預覽
做完之後,直接點擊分頁預覽,即可在流覽器端查看效果。
最後
篇幅有限,以上只展現了FineReport的一部分功能,很多效果無法展開,效率也無法感知。
只要掌握技巧,FineReport能做出來的效果驚人!
要說效率,最大的好處就是從資料庫中讀出資料自動產生報表,且一類報表做成一個固定樣式的範本,每次只要同步一下,自動同步週期性的報表,如日報、週報、月報、季報等。 還能批量匯出/列印,少了人力去一個一個用Excel統計匯總。
且操作上,原本Excel需要VBA開發的成本,在FineReport裡大多數都封裝成模組了,包括寫SQL取數,匯總篩選過濾等,基本上都有對應的功能鍵。像著名的資產負債表,如果按照以往寫代碼或者寫複雜的SQL語句,就有點摧殘生命了,而且那天書般的SQL語句要是出點錯誰來查,如果資料來自多個源,那就徹底無法解脫了。
其次,在資料處理速度上,由於性能一部分依靠資料庫,一部分依靠FineReport的行式報表引擎,相比於Excel的單機效率,幾十萬行的資料秒出。
最後,關於FineReport報表軟體,多說無用,親自下載體驗才能感受更多,感興趣的可以點這裏瞭解!
獲得帆軟最新動態:數據分析,報表實例,專業的人都在這裡!加入FineReport臉書粉絲團!
資料人懶人包下載:
喜歡這篇文章嗎?歡迎分享按讚,給予我們支持和鼓勵!