Excelize 開源基礎庫 2.8.0 版本正式發佈

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 技術交流羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章