Excelize 是 Go 語言編寫的用於操作 Office Excel 文檔基礎庫。2022年4月11日,社區正式發佈了 2.6.0 版本,該版本包含了多項新增功能、錯誤修複和相容性提升優化。下麵是有關該版本更新內容的摘要。 ...
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。
此版本中最顯著的變化包括:
相容性提示
- 重命名導出常量
NameSpaceDublinCoreMetadataIntiative
為NameSpaceDublinCoreMetadataInitiative
以修複拼寫錯誤 - 重命名導出變數
ErrUnsupportEncryptMechanism
為ErrUnsupportedEncryptMechanism
- 重命名導出變數
ErrDataValidationFormulaLenth
為ErrDataValidationFormulaLength
- 重命名導出變數
ErrDefinedNameduplicate
為ErrDefinedNameDuplicate
- 移除了導出變數
XMLHeaderByte
- 移除了設置數據數據驗證列表函數
SetSqrefDropList
的第二個形參isCurrentSheet
和異常返回值 - 移除了行迭代器中的導出欄位
TotalRows
新增功能
ProtectSheet
新增支持通過指定的演算法保護工作表,支持的演算法包括: XOR、MD4、MD5、SHA1、SHA256、SHA384 和 SHA512UnprotectSheet
支持通過指定第二個可選參數在移除工作表保護時驗證密碼- 新增 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:
SetWorkbookPrOptions
和GetWorkbookPrOptions
支持設置和獲取工作簿中的FilterPrivacy
與CodeName
屬性,以解除部分情況下向工作簿中嵌入 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
出處:https://www.cnblogs.com/xuri
本作品由 Ri Xu 創作,採用知識共用署名-非商業性使用-禁止演繹 2.5 中國大陸許可協議進行許可。 歡迎轉載,但任何轉載必須保留完整文章,在顯要地方顯示署名以及原文鏈接。如您有任何疑問或者授權方面的協商,請 給我留言。