Excelize 發布 2.4.1 版本,新增并發安全支持
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
-
AddPicture
和GetPicture
并發插入/獲取圖片 -
Rows
和Cols
并發行/列迭代 -
SetSheetRow
并發按行賦值 -
SetCellStyle
并發設置單元格樣式 -
NewStyle
并發創建樣式
-
- 導出 24 個內部異常消息
兼容性提升
- 提升內部默認 XML 命名空間兼容性,修復部分情況下生成文檔損壞的問題
- 兼容帶有非標準頁面布局屬性數據類型的電子表格文檔,避免打開失敗的問題
- 增加內部共享字符表計數
- 解除通過給定的時間設置單元格的值時,需要協調世界時 (UTC) 的限制,相關 issue #409
- 增加對內部 XML 控制字符的兼容
- 重命名導出字段
File.XLSX
為File.Pkg
- 修改
NewSheet
,GetSheetIndex
,DeleteSheet
對工作表名稱大小寫不敏感,相關 issue #873 - 修復條件格式與數據透視表的兼容性問題,解決 issue #883
- 改進與頁面布局中無效的首頁編號屬性的兼容性
-
SetCellRichText
增加字符數上限檢查并修復保留字符丟失問題
問題修復
- 修復部分情況下 12/24 制小時時間格式解析異常的問題,解決 issue #823 和 issue #841
- 修復部分情況下無法通過
GetComments
獲取批注的問題,解決 issue #825 - 修復設置和獲取批注時支持多個批注作者,解決 issue #829 和 #830
- 修復命名空間地址解析異常而產生重復命名空間,導致刪除再創建同名工作表后的生成文檔損壞問題,解決 issue #834
- 修復當設置工作表分組默認屬性
showOutlineSymbols
、summaryBelow
和summaryRight
為false
時,設置失效的問題 - 修復部分情況下
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
- 包含簡體中文、英語、法語、俄語、日語、韓語、阿拉伯語、德語和西班牙語的多國語言文檔網站更新