Excelize 釋出 2.4.1 版本,新增併發安全支援

xuri發表於2021-08-02

github.com/xuri/excelize

Excelize 是 Go 語言編寫的用於操作 Office Excel 文件基礎庫,基於 ECMA-376,ISO/IEC 29500 國際標準。可以使用它來讀取、寫入由 Microsoft Excel™ 2007 及以上版本建立的電子表格文件。支援 XLSX / XLSM / XLTM 等多種文件格式,高度相容帶有樣式、圖片(表)、透視表、切片器等複雜元件的文件,並提供流式讀寫 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

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

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

相容性提示

Go Modules 包引用地址調整為 github.com/xuri/excelize/v2

新增功能

  • 新增流式設定工作表列寬度支援,相關 issue #625
  • 新增流式建立合併單元格支援,相關 issue #826
  • 公式計算引擎新增 2 項公式函式支援: BESSELK, BESSELY
  • 公式計算引擎支援自定義名稱引用,相關 issue #856
  • 新增圖表時支援設定不顯示主要橫縱座標軸
  • 透過 AddPivotTable 建立資料透視表支援透過自定義名稱動態引用資料來源
  • 以下函式新增支援併發安全呼叫,相關 issue #861
    • AddPictureGetPicture 併發插入/獲取圖片
    • RowsCols 併發行/列迭代
    • SetSheetRow 併發按行賦值
    • SetCellStyle 併發設定單元格樣式
    • NewStyle 併發建立樣式
  • 匯出 24 個內部異常訊息

相容性提升

  • 提升內部預設 XML 名稱空間相容性,修復部分情況下生成文件損壞的問題
  • 相容帶有非標準頁面佈局屬性資料型別的電子表格文件,避免開啟失敗的問題
  • 增加內部共享字元表計數
  • 解除透過給定的時間設定單元格的值時,需要協調世界時 (UTC) 的限制,相關 issue #409
  • 增加對內部 XML 控制字元的相容
  • 重新命名匯出欄位 File.XLSXFile.Pkg
  • 修改 NewSheet, GetSheetIndex, DeleteSheet 對工作表名稱大小寫不敏感,相關 issue #873
  • 修復條件格式與資料透視表的相容性問題,解決 issue #883
  • 改進與頁面佈局中無效的首頁編號屬性的相容性
  • SetCellRichText 增加字元數上限檢查並修復保留字元丟失問題

問題修復

  • 修復部分情況下 12/24 制小時時間格式解析異常的問題,解決 issue #823 和 issue #841
  • 修復部分情況下無法透過 GetComments 獲取批註的問題,解決 issue #825
  • 修復設定和獲取批註時支援多個批註作者,解決 issue #829 和 #830
  • 修復名稱空間地址解析異常而產生重複名稱空間,導致刪除再建立同名工作表後的生成文件損壞問題,解決 issue #834
  • 修復當設定工作表分組預設屬性 showOutlineSymbolssummaryBelowsummaryRightfalse 時,設定失效的問題
  • 修復部分情況下 GetRows 返回冗餘工作表尾部空行的問題,解決 issue #842
  • 修復部分情況下獲取獲取單元格的值時,未返回帶有公式的空單元格的問題,解決 issue #855
  • 修復部分情況下 IF 公式條件運算錯誤問題,解決 issue #858
  • 修復透過 GetRowHeight 獲取行高度錯誤的問題
  • 修復部分情況下因範圍解析異常導致獲取和刪除自定義名稱錯誤的問題,解決 issue #879
  • 修復設定自定義名稱時關聯工作表索引錯誤的問題
  • 修復設定列樣式時已有單元格樣式未被更新的問題,解決 issue #467
  • 修復使用非法資料引用範圍建立資料透視表時導致的潛在 panic 的問題
  • 修復部分情況下讀取數字精度異常的問題,解決 issue #848 和 #852
  • 修復設定資料驗證規則時,部分情況下因未進行 XML 字元轉義處理導致生成文件損壞的問題,解決 issue #971
  • 修復設定資料驗證規則長度校驗不準確問題,解決 issue #972
  • 修復由時間解析異常導致的,部分情況下讀取帶有時間或日期數字格式單元格時 CPU 資源佔用率過高問題,解決 issue #974
  • 修復部分情況下,當自定義數字格式為日期時,月份解析失敗的問題

效能最佳化

  • 透過 Save 儲存或 SaveAs 另存文件時的內佔用降低約 19%

其他

  • 修復潛在的程式碼安全問題 CWE-190 和 CWE-681
  • Go Modules 依賴模組更新
  • 單元測試與文件更新
  • 持續整合服務改用 GitHub Action
  • 包含簡體中文、英語、法語、俄語、日語、韓語、阿拉伯語、德語和西班牙語的多國語言文件網站更新
  • 歡迎加入 Slack 頻道、Telegram 群組 或技術交流群

DingTalk Group ID: 30047129
QQ Group ID: 207895940

Excel 技術交流群

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

相關文章