
Excelize: Go 語言 Excel 文檔基礎(chǔ)庫
Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔類庫,基于 ECMA-376 Office OpenXML 標(biāo)準(zhǔn)。可以使用它來讀取、寫入由 Microsoft Excel? 2007 及以上版本創(chuàng)建的 XLSX 文檔。相比較其他的開源類庫,Excelize 支持寫入原本帶有圖片(表)、透視表和切片器等復(fù)雜樣式的文檔,還支持向 Excel 文檔中插入圖片與圖表,并且在保存后不會(huì)丟失文檔原有樣式,可以應(yīng)用于各類報(bào)表系統(tǒng)中。
2019年4月23日, 社區(qū)正式發(fā)布了 2.0.0 版本,該版本包含了很多新功能、錯(cuò)誤修復(fù)和性能優(yōu)化。下面是有關(guān)該版本更新內(nèi)容的摘要,完整的更改列表可查看change log.
Release Notes
此版本中最顯著的變化包括:
API 更改
下表列出了 v2.0.0 相比較于 v1.4.1 版本,API 的更改情況:
| 函數(shù)名 | 增加 error 返回值 |
行號(hào)計(jì)算方法變更* | 刪除 | 新增 |
|---|---|---|---|---|
| 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 行編號(hào),早期版本中某些方法中的基于 0 的行編號(hào)將不再使用,參考相關(guān) issue #349。
新增功能
- 新增
DuplicateRowTo()方法, 支持根據(jù)給定的工作表名稱(大小寫敏感)和行號(hào),在指定行后復(fù)制該行 - 工作表頁面布局設(shè)置函數(shù)
SetPageLayout()新增對頁面布局方向設(shè)置的支持,解決了相關(guān) issue #318 - 工作表頁面布局設(shè)置函數(shù)
SetPageLayout()新增對頁面紙張大小設(shè)置的支持
問題修復(fù)
- 修復(fù)部分情況下,在樣式格式中未指定單元格顏色填充時(shí),創(chuàng)建了空白填充的問題
- 修復(fù)當(dāng)工作表數(shù)據(jù)驗(yàn)證公式超過
225個(gè)字符時(shí),文件打開失敗的問題,解決了相關(guān) issue #339 - 修復(fù)部分情況下,刪除帶有公式的單元格會(huì)導(dǎo)致文件損壞的問題,解決了相關(guān) issue #346
- 修復(fù)通過獲取批注函數(shù)
GetComment(),從包含多個(gè)工作表的工作簿獲取批注時(shí),返回了錯(cuò)誤的工作表名稱的問題,解決了相關(guān) issue #345 - 修復(fù)獲取工作表全部單元格函數(shù)
GetRows()返回多余的列的問題 - 修復(fù)部分情況下刪除包含公式的工作表引起文檔損壞的問題
性能提升
- 單元格賦值系列函數(shù)、添加批注、圖片、圖表、超鏈接和形狀函數(shù)的性能,均獲得了大幅提升
- 新增重復(fù)圖片檢查,將用添加引用代替添加重復(fù)圖片,解決了相關(guān) issue #359
下圖是 v1.4.1 和 v2.0.0 版本下創(chuàng)建 12800 行 50 列工作表所執(zhí)行時(shí)間和內(nèi)存使用情況:

Excelize v1.4.1 VS v2.0.0
其他
- 文檔內(nèi)容更新與修正
- 完善單元測試,增加 go1.12 版本下的單元測試