Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔基礎(chǔ)庫,基于 ECMA-376,ISO/IEC 29500 國際標(biāo)準(zhǔn)凭语。可以使用它來讀取撩扒、寫入由 Microsoft Excel? 2007 及以上版本創(chuàng)建的電子表格文檔似扔。支持 XLSX / XLSM / XLTM 等多種文檔格式,高度兼容帶有樣式却舀、圖片(表)虫几、透視表、切片器等復(fù)雜組件的文檔挽拔,并提供流式讀寫 API辆脸,用于處理包含大規(guī)模數(shù)據(jù)的工作簿◇ψ纾可應(yīng)用于各類報表平臺啡氢、云計算、邊緣計算等系統(tǒng)术裸。入選 2020 Gopher China - Go 領(lǐng)域明星開源項目(GSP)倘是、2018 年開源中國碼云最有價值開源項目 GVP (Gitee Most Valuable Project),目前已成為 Go 語言最受歡迎的 Excel 文檔基礎(chǔ)庫袭艺。
開源代碼
GitHub: github.com/xuri/excelize
Gitee: gitee.com/xurime/excelize
中文文檔: xuri.me/excelize/zh-hans
2021年8月2日搀崭,社區(qū)正式發(fā)布了 2.4.1 版本,該版本包含了多項新增功能猾编、錯誤修復(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
- 公式計算引擎新增 2 項公式函數(shù)支持: BESSELK, BESSELY
- 公式計算引擎支持自定義名稱引用瘪撇,相關(guān) issue #856
- 添加圖表時支持設(shè)置不顯示主要橫縱坐標(biāo)軸
- 通過
AddPivotTable
創(chuàng)建數(shù)據(jù)透視表支持通過自定義名稱動態(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 個內(nèi)部異常消息
兼容性提升
- 提升內(nèi)部默認(rèn) XML 命名空間兼容性,修復(fù)部分情況下生成文檔損壞的問題
- 兼容帶有非標(biāo)準(zhǔn)頁面布局屬性數(shù)據(jù)類型的電子表格文檔倔既,避免打開失敗的問題
- 增加內(nèi)部共享字符表計數(shù)
- 解除通過給定的時間設(shè)置單元格的值時恕曲,需要協(xié)調(diào)世界時 (UTC) 的限制,相關(guān) issue #409
- 增加對內(nèi)部 XML 控制字符的兼容
- 重命名導(dǎo)出字段
File.XLSX
為File.Pkg
- 修改
NewSheet
,GetSheetIndex
,DeleteSheet
對工作表名稱大小寫不敏感渤涌,相關(guān) issue #873 - 修復(fù)條件格式與數(shù)據(jù)透視表的兼容性問題码俩,解決 issue #883
- 改進與頁面布局中無效的首頁編號屬性的兼容性
-
SetCellRichText
增加字符數(shù)上限檢查并修復(fù)保留字符丟失問題
問題修復(fù)
- 修復(fù)部分情況下 12/24 制小時時間格式解析異常的問題,解決 issue #823 和 issue #841
- 修復(fù)部分情況下無法通過
GetComments
獲取批注的問題歼捏,解決 issue #825 - 修復(fù)設(shè)置和獲取批注時支持多個批注作者稿存,解決 issue #829 和 #830
- 修復(fù)命名空間地址解析異常而產(chǎn)生重復(fù)命名空間笨篷,導(dǎo)致刪除再創(chuàng)建同名工作表后的生成文檔損壞問題,解決 issue #834
- 修復(fù)當(dāng)設(shè)置工作表分組默認(rèn)屬性
showOutlineSymbols
瓣履、summaryBelow
和summaryRight
為false
時率翅,設(shè)置失效的問題 - 修復(fù)部分情況下
GetRows
返回冗余工作表尾部空行的問題,解決 issue #842 - 修復(fù)部分情況下獲取獲取單元格的值時袖迎,未返回帶有公式的空單元格的問題冕臭,解決 issue #855
- 修復(fù)部分情況下 IF 公式條件運算錯誤問題,解決 issue #858
- 修復(fù)通過
GetRowHeight
獲取行高度錯誤的問題 - 修復(fù)部分情況下因范圍解析異常導(dǎo)致獲取和刪除自定義名稱錯誤的問題燕锥,解決 issue #879
- 修復(fù)設(shè)置自定義名稱時關(guān)聯(lián)工作表索引錯誤的問題
- 修復(fù)設(shè)置列樣式時已有單元格樣式未被更新的問題辜贵,解決 issue #467
- 修復(fù)使用非法數(shù)據(jù)引用范圍創(chuàng)建數(shù)據(jù)透視表時導(dǎo)致的潛在 panic 的問題
- 修復(fù)部分情況下讀取數(shù)字精度異常的問題,解決 issue #848 和 #852
- 修復(fù)設(shè)置數(shù)據(jù)驗證規(guī)則時归形,部分情況下因未進行 XML 字符轉(zhuǎn)義處理導(dǎo)致生成文檔損壞的問題托慨,解決 issue #971
- 修復(fù)設(shè)置數(shù)據(jù)驗證規(guī)則長度校驗不準(zhǔn)確問題,解決 issue #972
- 修復(fù)由時間解析異常導(dǎo)致的暇榴,部分情況下讀取帶有時間或日期數(shù)字格式單元格時 CPU 資源占用率過高問題厚棵,解決 issue #974
- 修復(fù)部分情況下,當(dāng)自定義數(shù)字格式為日期時蔼紧,月份解析失敗的問題
性能優(yōu)化
- 通過
Save
保存或SaveAs
另存文檔時的內(nèi)占用降低約 19%
其他
- 修復(fù)潛在的代碼安全問題 CWE-190 和 CWE-681
- Go Modules 依賴模塊更新
- 單元測試與文檔更新
- 持續(xù)集成服務(wù)改用 GitHub Action
- 包含簡體中文婆硬、英語、法語奸例、俄語彬犯、日語、韓語查吊、阿拉伯語谐区、德語和西班牙語的多國語言文檔網(wǎng)站更新