Excelize 釋出 2.6.0 版本,功能強大的 Excel 文件基礎庫

xuri發表於2022-04-11

github.com/xuri/excelize

Excelize 是 Go 語言編寫的用於操作 Office Excel 文件基礎庫,基於 ECMA-376,ISO/IEC 29500 國際標準。可以使用它來讀取、寫入由 Microsoft Excel™ 2007 及以上版本建立的電子表格文件。支援 XLAM / XLSM / XLSX / XLTM / XLTX 等多種文件格式,高度相容帶有樣式、圖片(表)、透視表、切片器等複雜元件的文件,並提供流式讀寫 API,用於處理包含大規模資料的工作簿。可應用於各類報表平臺、雲端計算、邊緣計算等系統。入選 2020 Gopher China - Go 領域明星開源專案(GSP)、2018 年開源中國碼雲最有價值開源專案 GVP (Gitee Most Valuable Project),目前已成為 Go 語言最受歡迎的 Excel 文件基礎庫。

開原始碼

GitHub: github.com/xuri/excelize

Gitee: gitee.com/xurime/excelize

中文文件: xuri.me/excelize/zh-hans

2022年4月11日,社群正式釋出了 2.6.0 版本,該版本包含了多項新增功能、錯誤修復和相容性提升最佳化。下面是有關該版本更新內容的摘要,完整的更改列表可檢視 changelog

此版本中最顯著的變化包括:

相容性提示

  • 重新命名匯出常量 NameSpaceDublinCoreMetadataIntiativeNameSpaceDublinCoreMetadataInitiative 以修復拼寫錯誤
  • 重新命名匯出變數 ErrUnsupportEncryptMechanismErrUnsupportedEncryptMechanism
  • 重新命名匯出變數 ErrDataValidationFormulaLenthErrDataValidationFormulaLength
  • 重新命名匯出變數 ErrDefinedNameduplicateErrDefinedNameDuplicate
  • 移除了匯出變數 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: SetWorkbookPrOptionsGetWorkbookPrOptions 支援設定和獲取工作簿中的 FilterPrivacyCodeName 屬性,以解除部分情況下向工作簿中嵌入 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 依賴模組更新
  • 單元測試與文件更新
  • 包含簡體中文、英語、法語、俄語、日語、韓語、阿拉伯語、德語和西班牙語的多國語言文件網站更新
  • 歡迎加入 Slack 頻道、Telegram 群組 或技術交流群
    DingTalk Group ID: 30047129 QQ Group ID: 207895940

Excelize 技術交流群

本作品採用《CC 協議》,轉載必須註明作者和本文連結
開源電子表格文件基礎庫 Excelize 作者

相關文章