Excelize 發(fā)布 2.4.1 版本,新增并發(fā)安全支持

Excelize?是 Go 語(yǔ)言編寫的用于操作 Office Excel 文檔基礎(chǔ)庫(kù),基于 ECMA-376,ISO/IEC 29500 國(guó)際標(biāo)準(zhǔn)??梢允褂盟鼇?lái)讀取、寫入由 Microsoft Excel? 2007 及以上版本創(chuàng)建的電子表格文檔。支持 XLSX / XLSM / XLTM 等多種文檔格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復(fù)雜組件的文檔,并提供流式讀寫 API,用于處理包含大規(guī)模數(shù)據(jù)的工作簿??蓱?yīng)用于各類報(bào)表平臺(tái)、云計(jì)算、邊緣計(jì)算等系統(tǒng)。入選 2020 Gopher China - Go 領(lǐng)域明星開(kāi)源項(xiàng)目(GSP)、2018 年開(kāi)源中國(guó)碼云最有價(jià)值開(kāi)源項(xiàng)目?GVP?(Gitee Most Valuable Project),目前已成為 Go 語(yǔ)言最受歡迎的 Excel 文檔基礎(chǔ)庫(kù)。
開(kāi)源代碼
GitHub:?github.com/xuri/excelize
Gitee:?gitee.com/xurime/excelize
中文文檔:?xuri.me/excelize/zh-hans
2021年8月2日,社區(qū)正式發(fā)布了 2.4.1 版本,該版本包含了多項(xiàng)新增功能、錯(cuò)誤修復(fù)和兼容性提升優(yōu)化。下面是有關(guān)該版本更新內(nèi)容的摘要,完整的更改列表可查看?changelog。
此版本中最顯著的變化包括:
兼容性提示
Go Modules 包引用地址調(diào)整為?github.com/xuri/excelize/v2
新增功能
新增流式設(shè)置工作表列寬度支持,相關(guān) issue #625
新增流式創(chuàng)建合并單元格支持,相關(guān) issue #826
公式計(jì)算引擎新增 2 項(xiàng)公式函數(shù)支持: BESSELK, BESSELY
公式計(jì)算引擎支持自定義名稱引用,相關(guān) issue #856
添加圖表時(shí)支持設(shè)置不顯示主要橫縱坐標(biāo)軸
通過(guò)?
AddPivotTable
?創(chuàng)建數(shù)據(jù)透視表支持通過(guò)自定義名稱動(dòng)態(tài)引用數(shù)據(jù)源以下函數(shù)新增支持并發(fā)安全調(diào)用,相關(guān) issue #861
AddPicture
?和?GetPicture
?并發(fā)插入/獲取圖片Rows
?和?Cols
?并發(fā)行/列迭代SetSheetRow
?并發(fā)按行賦值SetCellStyle
?并發(fā)設(shè)置單元格樣式NewStyle
?并發(fā)創(chuàng)建樣式導(dǎo)出 24 個(gè)內(nèi)部異常消息
兼容性提升
提升內(nèi)部默認(rèn) XML 命名空間兼容性,修復(fù)部分情況下生成文檔損壞的問(wèn)題
兼容帶有非標(biāo)準(zhǔn)頁(yè)面布局屬性數(shù)據(jù)類型的電子表格文檔,避免打開(kāi)失敗的問(wèn)題
增加內(nèi)部共享字符表計(jì)數(shù)
解除通過(guò)給定的時(shí)間設(shè)置單元格的值時(shí),需要協(xié)調(diào)世界時(shí) (UTC) 的限制,相關(guān) issue #409
增加對(duì)內(nèi)部 XML 控制字符的兼容
重命名導(dǎo)出字段?
File.XLSX
?為?File.Pkg
修改?
NewSheet
,?GetSheetIndex
,?DeleteSheet
?對(duì)工作表名稱大小寫不敏感,相關(guān) issue #873修復(fù)條件格式與數(shù)據(jù)透視表的兼容性問(wèn)題,解決 issue #883
改進(jìn)與頁(yè)面布局中無(wú)效的首頁(yè)編號(hào)屬性的兼容性
SetCellRichText
?增加字符數(shù)上限檢查并修復(fù)保留字符丟失問(wèn)題
問(wèn)題修復(fù)
修復(fù)部分情況下 12/24 制小時(shí)時(shí)間格式解析異常的問(wèn)題,解決 issue #823 和 issue #841
修復(fù)部分情況下無(wú)法通過(guò)?
GetComments
?獲取批注的問(wèn)題,解決 issue #825修復(fù)設(shè)置和獲取批注時(shí)支持多個(gè)批注作者,解決 issue #829 和 #830
修復(fù)命名空間地址解析異常而產(chǎn)生重復(fù)命名空間,導(dǎo)致刪除再創(chuàng)建同名工作表后的生成文檔損壞問(wèn)題,解決 issue #834
修復(fù)當(dāng)設(shè)置工作表分組默認(rèn)屬性?
showOutlineSymbols
、summaryBelow
?和?summaryRight
?為?false
?時(shí),設(shè)置失效的問(wèn)題修復(fù)部分情況下?
GetRows
?返回冗余工作表尾部空行的問(wèn)題,解決 issue #842修復(fù)部分情況下獲取獲取單元格的值時(shí),未返回帶有公式的空單元格的問(wèn)題,解決 issue #855
修復(fù)部分情況下 IF 公式條件運(yùn)算錯(cuò)誤問(wèn)題,解決 issue #858
修復(fù)通過(guò)?
GetRowHeight
?獲取行高度錯(cuò)誤的問(wèn)題修復(fù)部分情況下因范圍解析異常導(dǎo)致獲取和刪除自定義名稱錯(cuò)誤的問(wèn)題,解決 issue #879
修復(fù)設(shè)置自定義名稱時(shí)關(guān)聯(lián)工作表索引錯(cuò)誤的問(wèn)題
修復(fù)設(shè)置列樣式時(shí)已有單元格樣式未被更新的問(wèn)題,解決 issue #467
修復(fù)使用非法數(shù)據(jù)引用范圍創(chuàng)建數(shù)據(jù)透視表時(shí)導(dǎo)致的潛在 panic 的問(wèn)題
修復(fù)部分情況下讀取數(shù)字精度異常的問(wèn)題,解決 issue #848 和 #852
修復(fù)設(shè)置數(shù)據(jù)驗(yàn)證規(guī)則時(shí),部分情況下因未進(jìn)行 XML 字符轉(zhuǎn)義處理導(dǎo)致生成文檔損壞的問(wèn)題,解決 issue #971
修復(fù)設(shè)置數(shù)據(jù)驗(yàn)證規(guī)則長(zhǎng)度校驗(yàn)不準(zhǔn)確問(wèn)題,解決 issue #972
修復(fù)由時(shí)間解析異常導(dǎo)致的,部分情況下讀取帶有時(shí)間或日期數(shù)字格式單元格時(shí) CPU 資源占用率過(guò)高問(wèn)題,解決 issue #974
修復(fù)部分情況下,當(dāng)自定義數(shù)字格式為日期時(shí),月份解析失敗的問(wèn)題
性能優(yōu)化
通過(guò)?
Save
?保存或?SaveAs
?另存文檔時(shí)的內(nèi)占用降低約 19%
其他
修復(fù)潛在的代碼安全問(wèn)題 CWE-190 和 CWE-681
Go Modules 依賴模塊更新
單元測(cè)試與文檔更新
持續(xù)集成服務(wù)改用 GitHub Action
包含簡(jiǎn)體中文、英語(yǔ)、法語(yǔ)、俄語(yǔ)、日語(yǔ)、韓語(yǔ)、阿拉伯語(yǔ)、德語(yǔ)和西班牙語(yǔ)的多國(guó)語(yǔ)言文檔網(wǎng)站更新