設計思路篇
Excel是我們日常辦公中最常用的電子表格程序,不僅可滿足報表數據的計算需求,還可提供繪圖、數據透視分析、BI和Visual Basic for Applications (VBA)宏語言編程等多項功能。經過數年發展,Excel已具備所有電子表格的基本能力,在滿足統計、工程和財務領域的各項數據分析需求的同時,還取代了Lotus 1-2-3成為電子表格的行業標准。
Excel的命名源自於英語中"Excellence"一詞,代表着:卓越和優秀,而最能體現其"卓越和優秀"的點就是Excel的公式與函數。Excel 的公式函數使得本身靜態的表格真正"活"了起來。
如果說Excel是基於"公式與函數"的特性,成為了職場精英高效工作必備的神兵,那么純前端表格控件 SpreadJS 也正是依靠這一特性,成為了開發者快速開發企業Web應用的利器。
SpreadJS是葡萄城研發的一款基於 HTML5 的純前端表格控件,兼容 450 多種 Excel 公式,具備"高性能、跨平台、與 Excel 高度兼容"的產品特性,備受華為、明源雲、遠光軟件等知名企業青睞,被中國軟件行業協會認定為"中國優秀軟件產品"。借助SpreadJS的組件功能,開發者得以將Excel搬到了線上的網頁中,使應用程序具備在線Excel 的能力。
視頻: https://videos.grapecity.com.cn/SpreadJS/online/SpreadJS_Introduction.mp4
在2021年之前,基於瀏覽器的Web 應用的確可以滿足企業大部分需求,但隨着 Web 3.0的推出,以及萬物互聯與元宇宙等新興概念的出現,應用程序極致的性能與用戶體驗開始逐步替代程序功能本身,並有望成為未來Web系統的"標配"。
不過,受限於瀏覽器內存本身,前端組件的性能瓶頸無法避免。為此,葡萄城提出了"類 Excel 全棧解決方案"來解決這一問題。
SpreadJS + GcExcel 構建類 Excel 全棧解決方案
由於前端資源的限制,當我們去加載一個包含大量計算公式的Excel時(例如地產行業的投資管理模型、金融保險行業的金融精算表格、生產制造業的設計底稿等),表格加載緩慢、程序未響應,甚至崩潰的問題時有發生。
這些Excel的共同特點是:公式數量在10W~20W以上,表格包含大量邏輯復雜且互相嵌套的公式函數,如果僅依靠JS組件和瀏覽器處理這些文檔,顯然會捉襟見肘。然而,如果將它們放在后端服務器上執行,即不會影響到用戶體驗,又能明顯優化前端性能,實現前后端負載均衡,這便是SpreadJS + GcExcel 構建類 Excel 全棧解決方案的設計初衷。
利用 GcExcel在服務端的性能優勢,將其與純前端表格控件SpreadJS雙劍合璧,即可滿足在線文檔數據同步、在線填報、批量導出與打印,以及類 Excel 報表模板設計與服務端高性能處理等功能。
類 Excel 全棧解決方案在處理大型 Excel 文檔時的優化思路:
1、利用GcExcel在服務端批量處理 Excel 的特性和性能優勢,在Java或 .NET平台對整個Excel文檔進行加載和總體計算。
2、僅利用純前端表格控件SpreadJS來展示頁面結果,並實現與用戶進行交互。
方案架構圖如下所示:
根據這樣的設計,GcExcel可以有效分擔原本SpreadJS的部分任務(這部分任務本身會大量消耗前端性能),減輕前端壓力,全棧結構也有效避免了頭重腳輕,使應用程序更加優雅。
本期主要介紹了全棧表格技術在應對復雜公式計算場景時的設計思路,下一期我們將從代碼開始詳細講解。如果您的項目中有類似的需求,或者希望進一步了解類 Excel 全棧解決方案的應用場景和案例,歡迎前往葡萄城官網。