Excelize 是 Go 語言編寫的用於操作 Office Excel 檔案基礎庫,基於 ECMA-376,ISO/IEC 29500 國際標準。可以使用它來讀取、寫入由 Microsoft Excel™ 2007 及以上版本創建的電子錶格檔案。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多種檔案格式,高度兼容帶有樣式、圖片(表)、樞紐分析表、切片器等複雜組件的檔案,並提供流式讀寫 API,用於處理包含大規模數據的活頁簿。可應用於各類報表平台、雲計算、邊緣計算等系統。入選 2020 Gopher China - Go 領域明星開源項目 (GSP)、 2018 開源中國碼雲 Gitee 最有價值開源項目 GVP,目前已成為 Go 語言最受歡迎的 Excel 檔案基礎庫。
2022年4月11日,社區正式釋出了 2.6.0 版本,該版本包含了多項新增功能、錯誤修復和兼容性提升優化。下面是有關該版本更新內容的摘要,完整的更改列表可查看 changelog。
此版本中最顯著的變化包括:
兼容性提示
- 重命名導出常量
NameSpaceDublinCoreMetadataIntiative
為 NameSpaceDublinCoreMetadataInitiative
以修復拼寫錯誤
- 重命名導出變數
ErrUnsupportEncryptMechanism
为 ErrUnsupportedEncryptMechanism
- 重命名導出變數
ErrDataValidationFormulaLenth
为 ErrDataValidationFormulaLength
- 重命名導出變數
ErrDefinedNameduplicate
為 ErrDefinedNameDuplicate
- 移除了導出變數
XMLHeaderByte
- 移除了設置數據數據驗證列表函數
SetSqrefDropList
的第二個形參 isCurrentSheet
和異常返回值
- 移除了列迭代器中的導出字段
TotalRows
新增功能
-
ProtectSheet
新增支持通過指定的算法保護工作表,支持的算法包括: XOR、MD4、MD5、SHA1、SHA256、SHA384 和 SHA512
-
UnprotectSheet
支持通過指定第二個可選參數在移除工作表保護時驗證密碼
- 新增 71 項公式函數: AVERAGEIFS, BETADIST, BETA.DIST, BETAINV, BETA.INV, BINOMDIST, BINOM.DIST, BINOM.DIST.RANGE, BINOM.INV, CHIINV, CHITEST, CHISQ.DIST, CHISQ.DIST.RT, CHISQ.INV, CHISQ.INV.RT, CHISQ.TEST, CONFIDENCE.T, CORREL, COVAR, COVARIANCE.P, CRITBINOM, ERROR.TYPE, EXPON.DIST, EXPONDIST, F.DIST, F.DIST.RT, FDIST, F.INV, F.INV.RT, FINV, FORMULATEXT, F.TEST, FTEST, GAMMA.DIST, GAMMADIST, GAMMA.INV, GAMMAINV, GAMMALN.PRECISE, GAUSS, HOUR, HYPGEOM.DIST, HYPGEOMDIST, INDIRECT, LOGINV, LOGNORM.DIST, LOGNORMDIST, LOGNORM.INV, MODE, MODE.MULT, MODE.SNGL, NEGBINOM.DIST, NEGBINOMDIST, PHI, SECOND, SERIESSUM, SUMIFS, SUMPRODUCT, SUMX2MY2, SUMX2PY2, SUMXMY2, T.DIST, T.DIST.2T, T.DIST.RT, TDIST, TIMEVALUE, T.INV, T.INV.2T, TINV, T.TEST, TTEST, TYPE
- 保存或另存為活頁簿時增加對文件擴展名進行檢查
- 支持設置活頁簿視圖模式和顯示/隱藏標尺
- 引入依賴庫 NFP (number format parser) 以增加對自定義時間、日期和文本類型數字格式的支持,可對包含 19 種語言(南非荷蘭語、孟加拉語、漢語、英語、法語、德語、奧地利語、愛爾蘭語、意大利語、俄語、西班牙語、泰語、藏語、土耳其語、威爾士語、沃洛夫語、科薩語、彝語和祖魯語)本地月份名稱和 12 小時制格式的數字格式表達式進行解析,相關 issues #660, #764, #1093, #1112 和 #1133
- 新增 API:
SetWorkbookPrOptions
和 GetWorkbookPrOptions
支持設置和獲取活頁簿中的 FilterPrivacy
與 CodeName
屬性,以解除部分情況下向活頁簿中嵌入 VBA 工程時的限制,相關 issue #1148
- 公式計算引擎支持中綴運算符後包含無參數公式函數的計算
- 支持以文本形式讀取布爾型存儲格的值
- 通過
AddChart
函數添加圓環圖時,支持指定圓環圖內徑大小,解決 issue #1172
- 新增導出 4 項錯誤信息
ErrPasswordLengthInvalid
, ErrUnsupportedHashAlgorithm
, ErrUnsupportedNumberFormat
, ErrWorkbookExt
,以便開發者可根據不同的錯誤類型進行採取相應處理
兼容性提升
- 提升與 LibreOffice 電子錶格應用程式的兼容性,修復在 LibreOffice 中打開的工作表名包含空格時,自動過濾器失效的問題,解決 issue #1122
- 提升對活頁簿中替代內容的支持,保留活頁簿、工作表以及 drawingML 中的替代內容
- 提升與頁面設置中打印質量 DPI 設置屬性的兼容性
問題修復
- 修復另存為活頁簿時,頁面佈局屬性丟失的問題,解決 issue #1117
- 修復部分情況下,對工作表進行修改後合併存儲格區域未更新的問題
- 修復樣式解析異常導致的粗體和部分其他字體樣式丟失問題,解決 issue #1119
- 修復部分情況下將文檔保存為 XLAM / XLSM / XLTM / XLTX 格式後文檔損壞的問題
- 存儲格樣式支持繼承列/欄樣式,以修復對工作表進行修改後合併存儲格區域存儲格樣式不正確的問題,解決 issue #1129
- 修復部分情況下獲取存儲格樣式 ID 錯誤的問題
- 修復編號為 42 的內建數字格式定義錯誤的問題
- 修復部分情況下數字精度解析錯誤的問題
-
SetCellDefault
支持設置非數字類型存儲格的值,解決 issue #1139
- 修復部分情況下另存為活頁簿時,顯示或隱藏工作表標籤屬性丟失的問題,解決 issue #1160
- 修復部分情況下嵌套公式計算錯誤的問題,解決 issue #1164
- 修復部分情況下公式計算結果精度不準確以及在 x86 和 arm64 架構 CPU 下公式計算結果精度不一致的問題
- 修復部分情況下使用科學記數法表示的數值解析失敗的問題
- 修復圖表軸最大值最小值為 0 時不起作用的問題
性能優化
- 提高使用列迭代器進行流式讀取的性能,當讀取包含大規模數據的電子錶格文檔時,內存開銷相較於上一版本降低最高約 50%,內存垃圾回收次數降低約 80%
其他
- Go Modules 依賴模塊更新
- 單元測試與文檔更新
- 包含簡體中文、英語、法語、俄語、日語、韓語、阿拉伯語、德語和西班牙語的多國語言文檔網站更新