Go 語言 Excel 類庫 Excelize 2.0.0 版本釋出

xuri發表於2019-04-23

Excelize Go 語言 Excel 文件類庫

Excelize 是 Go 語言編寫的一個用來操作 Office Excel 文件類庫,基於 ECMA-376 OOXML Spec。可以使用它來讀取、寫入 XLSX 檔案,相比較其他的開源類庫,Excelize 支援操作帶有資料透視表、切片器、圖表與圖片的 Excel 並支援向 Excel 中插入圖片與建立簡單圖表,可應用於各種報表系統中。

GitHub: github.com/360EntSecGroup-Skylar/excelize

2019 年 4 月 23 日, 社群正式釋出了 2.0.0 版本,該版本包含了很多新功能、錯誤修復和效能優化。下面是有關該版本更新內容的摘要,完整的更改列表可檢視 change log.

Release Notes

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

API 更改

下表列出了 v2.0.0 相比較於 v1.4.1 版本,API 的更改情況:

函式名 增加 error 返回值 行號計算方法變更* 刪除 新增
ToALphaString × × ×
TitleToNumber × × ×
SplitCellName × × ×
JoinCellName × × ×
ColumnNameToNumber × × ×
ColumnNumberToName × × ×
CellNameToCoordinates × × ×
CoordinatesToCellName × × ×
DuplicateRowTo × × ×
SetCellFloat × × ×
SetCellStyle × × ×
InsertCol × × ×
RemoveCol × × ×
RemoveRow × ×
InsertRow × ×
DuplicateRow × × ×
SetRowHeight × × ×
GetRowHeight × × ×
GetCellValue × × ×
GetCellFormula × × ×
GetCellHyperLink × × ×
SetCellHyperLink × × ×
SetCellInt × × ×
SetCellBool × × ×
SetCellStr × × ×
SetCellDefault × × ×
GetCellStyle × × ×
SetCellValue × × ×
MergeCell × × ×
SetSheetRow × × ×
SetRowVisible × ×
GetRowVisible × ×
SetRowOutlineLevel × ×
GetRowOutlineLevel × ×
GetRows × × ×
Columns × × ×
SearchSheet × × ×
GetPicture × × ×
AutoFilter × × ×
GetColVisible × × ×
SetColVisible × × ×
GetColOutlineLevel × × ×
SetColOutlineLevel × × ×
SetColWidth × × ×
GetColWidth × × ×
GetMergeCells × × ×
ProtectSheet × × ×
UnprotectSheet × × ×
UpdateLinkedValue × × ×
SetSheetVisible × × ×
adjustHelper × × ×
adjustMergeCells × × ×
adjustAutoFilter × × ×
prepareCell × × ×
setDefaultTimeStyle × × ×
timeToExcelTime × × ×
addDrawingChart × × ×
addDrawingVML × × ×
addDrawingPicture × × ×
getTotalRowsCols × × ×
checkRow × × ×
addDrawingShape × × ×
addTable × × ×
workSheetReader × × ×
copySheet × × ×

* 從版本 v2.0.0 開始,所有行操作方法都使用從 1 開始的 Excel 行編號,早期版本中某些方法中的基於 0 的行編號將不再使用,參考相關 issue #349

新增功能

  • 新增 DuplicateRowTo() 方法, 支援根據給定的工作表名稱(大小寫敏感)和行號,在指定行後複製該行
  • 工作表頁面佈局設定函式 SetPageLayout() 新增對頁面佈局方向設定的支援,解決了相關 issue #318
  • 工作表頁面佈局設定函式 SetPageLayout() 新增對頁面紙張大小設定的支援

問題修復

  • 修復部分情況下,在樣式格式中未指定單元格顏色填充時,建立了空白填充的問題
  • 修復當工作表資料驗證公式超過 225 個字元時,檔案開啟失敗的問題,解決了相關 issue #339
  • 修復部分情況下,刪除帶有公式的單元格會導致檔案損壞的問題,解決了相關 issue #346
  • 修復通過獲取批註函式 GetComment(),從包含多個工作表的工作簿獲取批註時,返回了錯誤的工作表名稱的問題,解決了相關 issue #345
  • 修復獲取工作表全部單元格函式 GetRows() 返回多餘的列的問題
  • 修復部分情況下刪除包含公式的工作表引起文件損壞的問題

效能提升

  • 單元格賦值系列函式、新增批註、圖片、圖表、超連結和形狀函式的效能,均獲得了大幅提升
  • 新增重複圖片檢查,將用新增引用代替新增重複圖片,解決了相關 issue #359

下圖是 v1.4.1 和 v2.0.0 版本下建立 12800 行 50 列工作表所執行時間和記憶體使用情況:

Excelize Go 語言 Excel 文件類庫 v1.4.1 和 v2.0.0 效能對比

其他

  • 文件內容更新與修正
  • 完善單元測試,增加 go1.12 版本下的單元測試

相關文章