Excelize 是 Go 語言編寫的用於操作 Office Excel 檔案基礎庫,基於 ECMA-376,ISO/IEC 29500 國際標準。可以使用它來讀取、寫入由 Microsoft Excel™ 2007 及以上版本創建的電子錶格檔案。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多種檔案格式,高度兼容帶有樣式、圖片(表)、樞紐分析表、切片器等複雜組件的檔案,並提供流式讀寫 API,用於處理包含大規模數據的活頁簿。可應用於各類報表平台、雲計算、邊緣計算等系統。入選 2020 Gopher China - Go 領域明星開源項目 (GSP)、 2018 開源中國碼雲 Gitee 最有價值開源項目 GVP,目前已成為 Go 語言最受歡迎的 Excel 檔案基礎庫。
2023年8月28日,社區正式釋出了 2.8.0 版本,該版本包含了多項新增功能、錯誤修復和兼容性提升優化。下面是有關該版本更新內容的摘要,完整的更改列表可查看 changelog。
此版本中最顯著的變化包括:
相容性提示
- 將導出變數
ErrTableNameLength
重命名為 ErrNameLength
- 將導出類型
PaneOptions
重命名為 Selection
- 將導出類型
Comment
中的 Runs
字段重命名為 Paragraph
- 移除了
Style
數據類型中的 Lang
字段
- 移除了
ChartTitle
數據類型,使用 RichTextRun
類型代替
- 更改
DecimalPlaces
字段的數據類型為指針類型
- 修改了默認點與像素單位轉換系數,相關 issue #279 and #1536
- 修改了
AddShape
函式的簽名:將 func (f *File) AddShape(sheet, cell string, opts *Shape) error
改為 func (f *File) AddShape(sheet string, opts *Shape) error
新增功能
- 新增導出錯誤變數
ErrExistsTableName
和 ErrorFormControlValue
-
Options
數據類型中新增 ShortDatePattern
, LongDatePattern
, LongTimePattern
和 CultureInfo
選項,支持設定長短日期與時間格式代碼,相關 issue #1199
- 新增用於表示區域代碼的
CultureName
類型枚舉
- 新增函式
GetTables
與 DeleteTable
支持獲取與刪除表格,相關 issue #674 和 #1454
- 新增函式
GetStyle
支持獲取樣式定義,相關 issue #314, #1520 和 #1521
- 支持為存儲格的值應用帶有佔位、對齊、捨入、貨幣、會計專用和轉換選項的數字格式,並支持帶有 812 種語言(位置)時間和日期類型的數字格式,相關 issue #660
- 新增 71 項公式函式: ARRAYTOTEXT, FORECAST, FORECAST.LINEAR, FREQUENCY, INTERCEPT, ODDFYIELD, ODDLPRICE, ODDLYIELD, PROB 和 VALUETOTEXT
- 增加對活頁簿保存路徑的檢查,若路徑長度超出限制將返回錯誤提示
- 新增
GetPanes
函式,支持獲取窗格和視圖選區設定
- 新增 3 項表單控制項函式
AddFormControl
、GetFormControls
和 DeleteFormControl
, 支持添加主要水平和垂直坐標軸標題,相關 issues #301 和 #1169
- 添加圖表函式
AddChart
支持添加主要水平和垂直坐標軸標題,相關 issue #1553
- 添加圖表函式
AddChart
支持添加次坐標軸,相關 issue #518
- 添加圖表函式
AddChart
支持設置圖表富文本標題與圖表標題格式,,相關 issue #1588
- 通過
AddShape
函式添加形狀時,如果給定的形狀類型不受支持,將返回異常錯誤
- 支持讀取帶有日本年號數字格式的存儲格,相關 issue #1590
- 函式
GetPictures
支持讀取帶有單一存儲格錨點位置的圖片,相關 issue #1585
- 函式
NewConditionalStyle
支持創建帶有數字格式與保護屬性的條件格式樣式,相關 issue #1610
相容性提升
- 添加對帶多字節文本的存儲格字符長度檢查,相關 issue #1517
- 當創建帶有重復名稱的表格或自定義名稱時,將返回錯誤異常
- 提高存儲格註解文本框大小顯示效果在 KingSoft WPS 下的兼容性
- 支持從自定義工作表屬性設定中讀取欄寬度,相關 issue #1536
- 修改內部工作表 XML 部件名稱為大小寫不敏感以提高相容性,相關 issue #1591
問題修復
- 修復因計算帶有轉義 XML 存儲格的長度有誤導致的,部分情況流式生成活頁簿損壞問題,解決 issue #1518, #1519 和 #1530
- 修復帶有多列文本的存儲格註解文本框大小異常問題
- 修復了部分情況下,讀取帶有數字格式的文本存儲格時,讀取結果有誤的問題,解決 issue #1523, #1528 和 #1533
- 修復了併發安全函式中存在的競態問題
- 修復了部分情況下,對與存儲格時間毫秒捨入精度結果有誤的問題
- 修復了部分情況下,讀取帶有 12 小時制數字格式的存儲格時,時間結果有誤的問題
- 修復了部分情況下,計算帶有 SUMIFS 和 AVERAGEIFS 函式的公式結果有誤的問題,解決 issue #1564
- 修復了公式計算引擎中基本算數運算符優先級問題導致的計算結果有誤問題,解決 issue #1599
- 修復部分情況下,帶有跨工作表存儲格引用公式計算結果有誤的問題
- 修復部分情況下,刪除列後,工作表中的表格調整結果異常的問題,解決 issue #1539
- 支持讀取存儲格中的多張圖片,解決 issue #1548
- 修復部分情況下,因讀取圖形對象位置有誤導致的添加圖片結果異常問題,解決 issue #1560
- 刪除列欄時支持調整公式,修復部分情況下導致的檔案損壞問題,解決 issue #1565
- 修復了部分情況下,計算帶有 CONCAT 和 CONCATENATE 函式的公式結果有誤的問題,解決 issue #1569
- 修復部分情況下,帶有嵌套數字類型參數公式的計算結果有誤問題,解決 issue #1582
- 修復因內部圖形對象計數器有誤導致的部分情況下添加圖片出現重復的問題,解決 issue #1584
- 修復因部分情況下讀取帶有時間類型數字格式的存儲格時,小時有誤的問題,解決 issue #1587
- 修復了部分情況下,獲取合併存儲格區域右下角存儲格坐標時出現的 panic
性能優化
- 優化內部正字表達式的執行速度,相關 issue #1532
- 避免內部字節數組與字符串數據類型變數之間的轉換,相關 issue #1541
其他
- Go Modules 依賴模塊更新
- 簡化了內部變數的聲明與錯誤返回語句
- 移除了內部帶有 Unicode 編碼的預設語言數字格式映射表
- 移除了內部
xlsxTabColor
數據類型,使用 xlsxColor
代替 xlsxTabColor
數據類型
- 單元測試與文檔更新
- 包含簡體中文、英語、法語、俄語、日語、韓語、阿拉伯語、德語和西班牙語的多國語言文檔網站更新