天天看點

Java 操作 Office 系列:利用 GcExcel 計算 Excel 公式函數

Java 操作 Office 系列:利用 GcExcel 計算 Excel 公式函數

随着企業數字化程序的加速,有越來越多的企業将原本用 Excel 完成的工作遷移到線上,往往需要通過一個B/S架構來管理企業的資料。這就意味着,我們需要前端或者服務端的表格控件來處理這部分Excel資料,特别是在金融、财務等領域,廣泛采用Excel的公式來完成業務資料的整理和計算,這就對Excel公式的相容能力和計算性能提出了很高的要求,本文就以葡萄城的GcExcel表格元件和SpreadJS表格控件為例,介紹一下怎樣在Java Web應用中解決Excel公式計算的問題。

Java 操作 Office 系列:利用 GcExcel 計算 Excel 公式函數

一. 前端表格控件:SpreadJS

我們先從較為直覺的前端表格控件SpreadJS開始了解,它基于 HTML5的Canvas實作,相容了 450 多種原生 Excel 公式,具備“高性能、跨平台、與 Excel 高度相容”的産品特性,使用 SpreadJS 的線上表格編輯器,可直接在 Angular、 React、 Vue 等前端架構中實作高效的模闆設計、線上編輯和資料綁定等功能,為最終使用者提供高度類似 Excel 的使用體驗。

1.公式函數

SpreadJS目前支援450多種Excel函數,我們可以直接将Excel導出,并且支援公式計算,修改值以後可以實時計算。

Java 操作 Office 系列:利用 GcExcel 計算 Excel 公式函數

2.自定義函數

金融、會計等很多行業,需要大量定制業務相關的計算邏輯,SpreadJS可以輕松實作自定義公式,并且保留與原生公式相同的操作體驗。

Java 操作 Office 系列:利用 GcExcel 計算 Excel 公式函數

另外,SpreadJS還支援異步函數、疊代計算、數組公式等全面而豐富的功能,甚至連最新的LAMBDA函數都支援,具體資訊可以去SpreadJS的學習指南去了解。

二. 服務端高性能表格元件:GcExcel

有了前端表格控件,很多朋友就想問,服務端的有沒有?有沒有Java版的?有沒有.NET平台的?不要慌,全都有!接下來我們一起了解服務端高性能表格元件:GcExcel。

之前可能很多朋友用過POI,但是今天的這款元件,可以在功能和性能上都是完全碾壓POI,可以看一下GcExcel和POI的對比,今天我們簡單了解一下它強大的公式函數能力:

1.公式函數:

在GcExcel中,使用者可以像在Excel中一樣為單元格設定公式和表達式,當表達式中所依賴的區域的值發生變化後,也會同步計算和更新,GcExcel提供了450多個内置的函數,可以幫助使用者建立非常實用和複雜的公式。

可以直接加載Excel檔案進行計算,當然也支援通過API設定公式:

<font size="3"><font size="3"><font size="3"> Workbook workbook = new Workbook();

// Fetch default worksheet

IWorksheet worksheet = workbook.getWorksheets().get(0);

// Set Formula in Cell E2

worksheet.getRange("E2").setFormula("=sum(A1:A2, B4,C1:C3)");</font></font></font>

2.跨工作簿公式

GcExcel同樣支援跨工作簿的公式如下。

<font size="3"><font size="3"><font size="3">Workbook workbook = new Workbook();

workbook.getWorksheets().get(0).getRange("B1").setFormula("='[SourceWorkbook.xlsx]Sheet1'!A1");</font></font></font>

和SpreadJS類似,GcExcel中同樣支援數組公式,疊代計算,自定義公式等等功能,感興趣的小夥伴可以前往葡萄城官網檢視學習指南。

三. 大量公式函數性能優化:SpreadJS+GcExcel

SpreadJS基于純前端的設計使得使用者在使用的過程中可能會遭遇到前端的性能瓶頸。在諸如地産行業的投資模型、金融保險行業的金融精算表格、财稅行業的底稿等。這些行業需求包含海量計算公式的Excel表格,公式個數一般在10W~20W這樣的數量級,且其中還會包含大量複雜邏輯、嵌套的公式計算等。以Chrome為例,單頁面能配置設定到的系統資源最大僅有2 Core的CPU和1.4G記憶體,上述Excel中的公式計算量已經遠超前端運作環境所能支援的上限。在使用者體驗上,就會表現為頁面運作緩慢,甚至崩潰的情況。

當遇到這樣的場景時,我們利用另一款元件GcExcel在服務端和性能的優勢,與SpreadJS配合,可以有效解決包含海量公式Excel文檔的加載、互動等的優化問題,具體實作方案可以前往葡萄城官網或是通路葡萄城産品技術社群,了解更多。

繼續閱讀