來(lái)源:中國(guó)電商物流網(wǎng) 發(fā)布時(shí)間:2020-5-12 12:19
在 GrapeCity Documents出現(xiàn)以前,服務(wù)端文檔組件向來(lái)以Apache POI為代表,作為一款由Java編寫的開(kāi)源API庫(kù),Apache POI 主要應(yīng)用于對(duì)Microsoft Office文檔進(jìn)行讀、寫,以及創(chuàng)建和維護(hù)。
但正如POI所定義的那樣:作為“Poor Obfuscation Implementation”首字母的縮寫,Apache POI僅提供“簡(jiǎn)單的模糊實(shí)現(xiàn)”,其在創(chuàng)建復(fù)雜邏輯的大型文檔時(shí),經(jīng)常會(huì)捉襟見(jiàn)肘。
如果想通過(guò)簡(jiǎn)單的代碼邏輯,快速創(chuàng)建、加載、編輯、導(dǎo)入/導(dǎo)出大型文檔(Excel、Word、PDF),并將其部署到云端時(shí),又該如何實(shí)現(xiàn)?
而這些需求,恰恰是GrapeCity Documents 可以滿足的。
GrapeCity Documents是什么?
GrapeCity Documents 是一款快速且高效的服務(wù)端文檔組件包,可在 Windows、Mac、Linux 上完美運(yùn)行,同時(shí)適用于 .NET和 Java 平臺(tái),可在不依賴 Microsoft Office 和 Acrobat 組件的情況下,提供快速生成、加載、編輯和保存 Excel、PDF、Word文檔的功能。
GrapeCity Documents 由四種針對(duì)不同文檔和開(kāi)發(fā)框架的組件構(gòu)成:
· 適用于所有 .NET 平臺(tái)的 Excel 文檔 API —— GcExcel(.NET)
· 適用于所有 Java 平臺(tái)的 Excel 文檔 API —— GcExcel(Java)
· 適用于所有 .NET 平臺(tái)的 PDF 文檔 API —— GcPDF
· 適用于所有 .NET 平臺(tái)的 Word 文檔 API —— GcWord
下面,我們將以其中的GcExcel 為例,詳細(xì)對(duì)比它與 Apache POI 的功能及性能優(yōu)劣。
功能對(duì)比:GcExcel VS Apache POI
1. 公式數(shù)量
GcExcel支持452種Excel公式。
Apache POI中,支持的公式數(shù)量很少(雖然Apache POI網(wǎng)站羅列了280多種可評(píng)估的公式,但在API中僅顯示為157種)。
2. 是否支持導(dǎo)出PDF
GcExcel不但支持導(dǎo)出PDF格式,還可控制頁(yè)面設(shè)置選項(xiàng)。
Apache POI不支持導(dǎo)出PDF。
3. 條件格式
GcExcel支持多種條件格式,如自定義圖標(biāo)集、判斷是否高于平均值(AboveAverage)、發(fā)生日期判斷、Top 10和重復(fù)項(xiàng)判斷,且這些條件格式的設(shè)置規(guī)則與VSTO保持一致。
但在Apache POI中,使用高級(jí)API來(lái)增加條件格式判斷會(huì)受限。因此,只能使用標(biāo)記為內(nèi)部用途的低級(jí)類來(lái)處理Top10、高于平均值(AboveAverage)等格式化選項(xiàng)。
4. 圖表類型
GcExcel的圖表界面與VSTO一致,支持約53種圖表類型。
Apache POI對(duì)圖表的支持非常有限,僅支持Line、Bar、Column、Scatter和Radar圖表類型。
5. 迷你圖
GcExcel完全支持添加和配置迷你圖(Sparklines)。
Apache POI目前不支持Sparklines。
6. 剪切、復(fù)制、粘貼形狀
GcExcel支持剪切、復(fù)制、粘貼形狀,Apache POI不支持。
7. 過(guò)濾器數(shù)據(jù)類型
GcExcel廣泛支持文本、數(shù)字、日期、顏色和圖標(biāo)等過(guò)濾器。
Apache POI僅支持基本的AutoFilter,需要使用低級(jí)類來(lái)實(shí)現(xiàn)應(yīng)用過(guò)濾或創(chuàng)建任何其他高級(jí)過(guò)濾器。
8. 排序
GcExcel支持所有類型的行排序、列排序、自定義排序、顏色和圖標(biāo)排序。
Apache POI沒(méi)有內(nèi)置的排序功能。但是,用戶可以使用shiftRows()/ ShiftColumns()并以編程方式對(duì)數(shù)據(jù)進(jìn)行排序。
9. 切片器
GcExcel支持帶有數(shù)據(jù)透視表的切片器,而Apache POI則不支持。
10. 導(dǎo)出CSV格式
GcExcel支持導(dǎo)出為CSV格式。
Apache POI沒(méi)有提供內(nèi)置的導(dǎo)出CSV選項(xiàng)。但是,可以使用編程的方式創(chuàng)建相應(yīng)的CSV / HTML文件。
11. 漸變填充
GcExcel支持漸變填充,而Apache POI不支持。
12. 單元格中獲取/設(shè)置值
在對(duì)單個(gè)單元格執(zhí)行獲取/設(shè)置值的情況下,GcExcel比Apache POI表現(xiàn)的更好。
13. 示例與幫助文檔
使用Apache POI,許多功能需要訪問(wèn)和了解底層API才能實(shí)現(xiàn), 但Apache POI提供的示例和文檔數(shù)量十分有限,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)學(xué)習(xí)成本較大。
而GcExcel作為獨(dú)立于平臺(tái)的API 組件,具備高性能、低內(nèi)存消耗的特點(diǎn),并且與Excel對(duì)象模型嚴(yán)格兼容。GcExcel更加易于使用且功能全面,通過(guò)其提供的在線演示示例和幫助文檔,開(kāi)發(fā)人員可以快速上手,迅速掌握產(chǎn)品使用技巧。
性能對(duì)比:GcExcel VS Apache POI
讓我們通過(guò)一個(gè)GcExcel Java的基準(zhǔn)測(cè)試項(xiàng)目對(duì)比其與Apache POI的性能優(yōu)劣,該項(xiàng)目是一個(gè)java gradle項(xiàng)目,可以輸出GcExcel、POI和Aspose.Cells的性能結(jié)果,如下所示:
· 設(shè)置:獲取和保存100,000 * 30單元格的double / string / date值,下圖顯示了double值的結(jié)果。
· GcExcel 用時(shí)不超過(guò)0.2S ;Apache POI 則達(dá)到18.7S左右
· 設(shè)置:計(jì)算和保存20,000 * 30個(gè)單元格的公式,結(jié)果如下:
· GcExcel 用時(shí)不超過(guò)1S ;Apache POI 則達(dá)到10S左右
· 打開(kāi)并保存一個(gè)20.5MB 的 Excel文件,其中包含了許多數(shù)據(jù)、公式和單元格格式,結(jié)果如下:
· GcExcel 用時(shí)不超過(guò)4.9S ;Apache POI 則達(dá)到10S左右
· GcExcel 內(nèi)存消耗為72.1MB;Apache POI 為3518.2MB
結(jié)論
從以上結(jié)果可以看出,GcExcel 是目前為止速度最快、內(nèi)存消耗最少的服務(wù)端電子表格組件。
盡管 Apache POI 是免費(fèi)的,但它的速度和內(nèi)存消耗遠(yuǎn)遠(yuǎn)達(dá)不到企業(yè)級(jí)項(xiàng)目的標(biāo)準(zhǔn),這就是為什么我只選擇100,000 * 30個(gè)單元格的原因,因?yàn)榧词乖?,000,000 * 30個(gè)單元格的情況下,GcExcel Java仍舊可以平穩(wěn)運(yùn)行。
除此之外,為了保證Apache POI成功運(yùn)行,還必須將JVM最小堆大小配置為4G,否則它將拋出OutOfMemory異常。 以下是build.gradle中的JVM配置:
applicationDefaultJvmArgs = ["-Xms4096m", "-Xmx8192m"]
大家可以從GitHub上下載這個(gè)測(cè)試項(xiàng)目:
https://github.com/GrapeCity/GcExcel-Java/tree/master/benchmark, 并使用以下命令行運(yùn)行它:
· on mac: ./gradlew run --args="double" //參數(shù)可以是double, string, date, formula, bigfile
· on windows: gradlew run --args="double" //參數(shù)可以是double, string, date, formula, bigfile
請(qǐng)注意,第一次運(yùn)行會(huì)非常慢,因?yàn)樗枰螺dgradle和所有相關(guān)軟件包。
以上,就是GrapeCity Documents 與Apache POI 在功能和性能上的對(duì)比測(cè)試,從數(shù)據(jù)可見(jiàn),無(wú)論是運(yùn)行速度,還是內(nèi)存消耗,GrapeCity Documents 都要比Apache POI表現(xiàn)的更為優(yōu)秀。
如果您也有服務(wù)端處理 Excel、Word、PDF等文檔的需求,需要快速批量操作大型文檔,可以前往GrapeCity Documents官網(wǎng)下載試用。
關(guān)于葡萄城
賦能開(kāi)發(fā)者!葡萄城公司成立于 1980 年,是全球領(lǐng)先的集開(kāi)發(fā)工具、商業(yè)智能解決方案、低代碼開(kāi)發(fā)平臺(tái)于一身的軟件和服務(wù)提供商。西安葡萄城是其在中國(guó)的分支機(jī)構(gòu),面向全球市場(chǎng)提供軟件研發(fā)服務(wù),并為中國(guó)企業(yè)的信息化提供國(guó)際先進(jìn)的開(kāi)發(fā)工具、軟件和研發(fā)咨詢服務(wù)。葡萄城的控件和軟件產(chǎn)品在國(guó)內(nèi)外屢獲殊榮,在全球被數(shù)十萬(wàn)家企業(yè)、學(xué)校和政府機(jī)構(gòu)廣泛應(yīng)用。
特別提醒:本網(wǎng)內(nèi)容轉(zhuǎn)載自其他媒體,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。本站不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。如若本網(wǎng)有任何內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系我們,本站將會(huì)在24小時(shí)內(nèi)處理完畢。