Excelize 開源基礎庫 2.8.0 版本正式釋出

2023-08-28 12:00:47

Excelize 開源基礎庫 2.8.0 版本正式釋出

Excelize 是 Go 語言編寫的用於操作電子試算表辦公檔案的開源基礎庫,基於 ISO/IEC 29500、ECMA-376 國際標準。可以使用它來讀取、寫入由 Microsoft Excel、WPS、Apache OpenOffice、LibreOffice 等辦公軟體建立的電子試算表檔案。支援 XLAM / XLSM / XLSX / XLTM / XLTX 等多種檔案格式,高度相容帶有樣式、圖片(表)、透視表、切片器等複雜元件的檔案,並提供流式讀寫支援,用於處理包含大規模資料的工作簿。可應用於各類報表平臺、雲端計算、邊緣計算等系統。自 2016 年開源以來已成為雲原生應用尤其是 Go 語言開發者在處理電子試算表辦公檔案時的熱門選擇,正在被廣泛應用於大型網際網路公司、中小企業客戶和初創公司。榮獲 2022 年中國開源創新大賽一等獎、入選 2020 Gopher China - Go 領域明星開源專案 (GSP)、2018 年開源中國碼雲最有價值開源專案 GVP (Gitee Most Valuable Project)。

開原始碼

GitHub: github.com/xuri/excelize

Gitee: gitee.com/xurime/excelize

中文檔案: xuri.me/excelize/zh-hans

2023年8月28日,社群正式釋出了 2.8.0 版本,該版本包含了多項新增功能、錯誤修復和相容性提升優化。下面是有關該版本更新內容的摘要,完整的更改列表可檢視 changelog

此版本中最顯著的變化包括:

相容性提示

  • 將匯出變數 ErrTableNameLength 重新命名為 ErrNameLength
  • 將匯出型別 PaneOptions 重新命名為 Selection
  • 將匯出型別 Comment 中的 Runs 欄位重新命名為 Paragraph
  • 移除了 Style 資料型別中的 Lang 欄位
  • 移除了 ChartTitle 資料型別,使用 RichTextRun 型別代替
  • 更改 DecimalPlaces 欄位的資料型別為指標型別
  • 修改了預設點與畫素單位轉換系數,相關 issue #279 和 #1536
  • 修改了 AddShape 函數的簽名:將 func (f *File) AddShape(sheet, cell string, opts *Shape) error 改為 func (f *File) AddShape(sheet string, opts *Shape) error

新增功能

  • 新增匯出錯誤變數 ErrExistsTableNameErrorFormControlValue
  • Options 資料型別中新增 ShortDatePattern, LongDatePattern, LongTimePatternCultureInfo 選項,支援設定長短日期與時間格式程式碼,相關 issue #1199
  • 新增用於表示區域程式碼的 CultureName 型別列舉
  • 新增函數 GetTablesDeleteTable 支援獲取與刪除表格,相關 issue #674 和 #1454
  • 新增函數 GetStyle 支援獲取樣式定義,相關 issue #314, #1520 和 #1521
  • 支援為單元格的值應用帶有佔位、對齊、舍入、貨幣、會計專用和轉換選項的數位格式,並支援帶有 812 種語言(位置)時間和日期型別的數位格式,相關 issue #660
  • 新增 10 項公式函數: ARRAYTOTEXT, FORECAST, FORECAST.LINEAR, FREQUENCY, INTERCEPT, ODDFYIELD, ODDLPRICE, ODDLYIELD, PROB 和 VALUETOTEXT
  • 增加對工作簿儲存路徑的檢查,若路徑長度超出限制將返回錯誤提示
  • 新增 GetPanes 函數,支援獲取窗格和檢視選區設定
  • 新增 3 項表單控制元件函數 AddFormControlGetFormControlsDeleteFormControl, 支援新增主要水平和垂直座標軸標題,相關 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 資料型別
  • 單元測試與檔案更新,單元測試行覆蓋度提升 0.24%,達到 98.91%
  • 包含簡體中文、英語、法語、俄語、日語、韓語、阿拉伯語、德語和西班牙語的多國語言檔案網站更新

致謝

感謝 Excelize 的所有貢獻者,以下是為此版本提交程式碼的貢獻者列表:

  • IAkumaI (Valery Ozarnichuk)
  • sillydong (Chen Zhidong)
  • fudali113 (fudali)
  • Juneezee (Eng Zer Jun)
  • joehan109
  • yicixin (壹次心)
  • vb6iscool
  • chengcxy (chengxinyao)
  • lidp20
  • JDavidVR (David)
  • fsfsx
  • cnmlgbgithub

歡迎加入技術交流群 DingTalk Group ID: 30047129 QQ Group ID: 1302058237

Excelize 技術交流群