Excelize 發佈 2.6.0 版本,功能強大的 Excel 文檔基礎庫

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 技術交流羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章