提到複雜報表,第一個想到的就是中國式報表。那麼到底什麼是中國式報表?它到底複雜在哪裏?如何應對複雜報表的開發需求?今天咱們就聊一聊這些問題。sql
都說中國式報表是最複雜的報表,沒有之一,那麼到底什麼纔是纔是中國式報表?數據庫
咱們總結了中國式報表的幾個典型特徵:格式複雜、信息量大、表頭亂。工具
舉個栗子,下圖是一張典型的中國式報表,咱們能夠看到這一張表中的數據是取自數據庫中的多個物理表,且表頭信息是多層嵌套且有帶斜線的表頭信息,但這只是中國式報表複雜度的冰山一角。性能
衆所周知,中國式報表的邊框線規則很複雜,格子每每是一層套一層,在繪製表格的時候要注意兼顧層級關係,最頭疼的是有些表格很寬,經常搞得顧了左顧不了右。優化
Excel 表格的規律性和易用性使得它在財務等系統用戶中備受親睞。excel 採用網格線吧格子圍出來的畫法,配合以合併格和邊框,比如給你們配上了尺子和筆。經過單元格的合併和拆分,再複雜的表樣用 excel 也能繪製出來,其餘報表工具也一樣能夠繪製出來。spa
在報表格式這部分雖然會有些複雜的表樣,可是耐心畫總會畫出來的。而報表數據計算統計的問題是更重要的,由於除了外在,咱們要更注重它的內涵。3d
同一張報表的數據會來自多個不一樣的數據表或視圖,甚至來自多個不一樣的異構數據庫,這就是咱們常說的多源報表。在這種報表需求中,excel 表格很難知足用戶日益增多的需求了,因此專業的報表工具逐漸佔有市場。excel
下面,咱們拿一個具體的報表需求來看下多源報表實現時會有哪些問題須要考慮。code
上圖是一個成本銷售表,樣式不復雜,數據來源是購進和銷出兩個數據表,除了關聯取數外,須要再計算一下餘額。整個需求簡單明確,實現的時候咱們能夠兩個數據表作叉乘,頂多寫個複雜的 sql 完事。那若是報表需求中涉及多個數據源呢?要知道數據庫中作 N 張表的叉乘是要花費很長時間的,並且 sql 的排錯、維護都很麻煩。因此專業的報表工具要具有對數據處理的高效便捷性。blog
報表數據統計就會涉及運算:行內各列之間的運算、針對某組全部數據的彙總等,這些基礎的運算在 excel 和報表工具中都支持。可是,中國式報表中只要涉及了時間,那麼八成以上就要計算比上期、比去年同期之類的,這種運算跨行或者跨組了,這種複雜需求如何實現呢?
比較有規律的需求咱們能夠經過寫代碼或者寫個複雜的 sql 處理,或者報表單元格里添加一些輔助格協助運算數據。不按常理出牌、沒有規律的報表如何繪製呢?舉個栗子,報表中須要顯示一些獨立數據,可是這些數據是從表格中東南西北挑幾個格子計算出來的;或者須要根據這個計算後的值再去數據庫裏獲取相關數據顯示的,這種通常就須要進行代碼開發實現了。
因此,咱們須要一款專業報表工具脫離數據庫的處理概念,有本身的一套處理機制去知足客戶對各類跨行組計算的複雜需求。
中國式報表還有一個複雜需求:填報。報表不只須要能夠統計彙總數據,還須要能夠修改數據,而後吧修改後的數據存起來(通常要求存儲到數據庫中)。只這一個需求就篩掉了幾乎全部的國外報表工具,而選擇了國外開源報表工具的技術人員只能是碼代碼實現填報需求,無疑增長了工做量。
咱們來詳細說幾點填報常見的需求,看完會發現填報沒有想象中那麼簡單:
1) 要容許表格和數據庫字段的隨意對應,可能整表一條記錄,也可能一行一條記錄,甚至可能一個格子一條記錄;
2) 在填寫數據過程當中要有自動計算的能力、合法性檢查的功能;
3) 填報的數據來源和更新去向的不一樣源問題
4) 用戶填寫數據的人性化考量,即編輯風格的支持性
對於報表工具而言,須要對報表的填報模型、數據處理、性能等方面進行處理,在知足用戶日益複雜需求的同時,又不失個性發展。
咱們上面談到了中國式報表的複雜性體現的方面,也更瞭解評估一個報表工具專業性的部分標準。報表複雜度在我國被簡化的機率幾乎爲零,而咱們報表工具須要作的就是化繁爲簡。在這裏,推薦一款專業報表工具解決上述中國式報表的難題—-- 潤乾報表。
做爲國產報表工具的鼻祖,首次提出了非線性報表的概念並被行業沿用至今,本着創新推進技術進步的理念不斷完善產品。
潤乾報表中主格、座標的靈活使用,能夠方便快捷的實現跨行組計算的需求。
下圖是潤乾報表實現比上期需求的配置和結果頁面,咱們能夠看到表達式清晰明瞭,很容易理解把握。
(潤乾報表產品結構圖)
(潤乾報表產品結構圖)
同時完善了對 excel 的兼容性,支持 excel 文件的導入導出。
總之,雖然中國式報表很複雜,並且可能會愈來愈複雜,可是咱們有潤乾報表這一個利器,要相信國產品牌的力量,要知道創新推進技術進步毫不是一句空話!