前後端結合解決Excel海量公式計算的性能問題

背景

在數據密集的業務領域,尤其是金融,保險,稅務等行業中,經常需要利用Excel模型,來對業務進行分析和處理。例如:
1.金融投資:
根據模型進行估值計算,並對投資風險進行評估,通過測算出投資的內部收益率(IRR),淨現值(NPV)來做投資收益分析,反應項目的獲利能力。
2.保險精算:
運用數學,統計學,保險學的理論和方法,對保險經營中的計算問題作定量分析,以保證保險經營的穩定性和安全性。
3.稅務審計:
在定製的審計底稿上填報基礎數據,通過Excel的公式計算彙總,整理成審計人員需要的信息,生成審計報告,常見於稅費彙算清繳,稅務稽查工作等。
在上述業務場景下,數據處理過程中都需要依賴很多數學計算,部分場景還需要依賴專業的數學模型。如果手工運算,不僅工程量大而且極易出錯。另外,以上業務場景中的數據表格的格式也極爲靈活,經常需要增加和調整。基於上述特點,以上行業的從業者往往會依賴Excel,利用其函數計算、彙總分析、透視表等功能,完成上述業務中的複雜數學計算。

痛點

線下操作Excel軟件,無法進行統一管理,特別是遇到模型升級,版本更新的情況。計算結果無法與其他系統,數據庫,分析工具等進行交互,形成數據孤島。
如果用軟件系統來管控,在前端頁面中操作Excel,可以解決版本控制,以及打通數據孤島的相關問題,但會引入新的問題:限於瀏覽器運行環境的資源限制,模型中蘊含大量的複雜公式計算容易造成交互端的性能瓶頸。
解決方案:
基於前端運行環境性能瓶頸的存在,不能將大量公式計算放在前端進行。我們接下來採取前後端結合的全棧方案,服務端利用GcExcel高效的性能進行公式計算,前端採用SpreadJS,利用其與GcExcel的兼容性和前端類Excel的操作和展示效果,將後端計算後的結果進行展示。
1.讀取模型之前,先用GcExcel在後端打開。在後端進行完整的計算。
2.前端根據所展示的Sheet工作表,從後端讀取對應的工作表並序列化進行傳輸。

3.前端SpreadJS禁用公式計算,設置計算按鈕改爲觸發式計算。
4.前端通過髒數據獲取修改記錄。
5.當主動點擊計算或者切換工作表Sheet頁籤時觸發請求,將修改記錄發送後端,後端將修改內容修改並整體計算。再將結果根據前端所展示的Sheet做序列化處理並傳輸至前端。
6.前端進行反序列化處理展示。

兩者結合,既利用了服務端的高性能避免了前端的性能瓶頸,又利用了前端的Excel操作進行分Sheet頁的展示,以及前端的髒數獲取修改操作並與後端交互。

源碼獲取

Demo地下載址:
https://gcdn.grapecity.com.cn/forum.php?mod=attachment&aid=MjQ1NjU1fDllYzAwYjVhfDE2NjkxNjY2MTZ8NjI2NzZ8OTk3MTg%3D

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章