<center><a href="https://xuri.me/excelize/images/excelize.svg" target="_blank" title="Go 语言读写 Excel 文档类库"><img src=https://xuri.me/excelize/images/excelize.svg" width="500" alt="Go 语言读写 Excel 文档类库"></a></center>
[Excelize](https://github.com/360EntSecGroup-Skylar/excelize) 是 Go 语言编写的用于操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML 标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX 文档。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)、透视表和切片器等复杂样式的文档,还支持向 Excel 文档中插入图片与图表,并且在保存后不会丢失文档原有样式,可以应用于各类报表系统中。
2019年4月23日, 社区正式发布了 2.0.0 版本,该版本包含了很多新功能、错误修复和性能优化。下面是有关该版本更新内容的摘要,完整的更改列表可查看 [Release Notes](https://github.com/360EntSecGroup-Skylar/excelize/releases/tag/v2.0.0)。完整的更改列表可查看 [change log](https://github.com/360EntSecGroup-Skylar/excelize/compare/v1.4.1...v2.0.0).
Release Notes
------------
此版本中最显著的变化包括:
#### API 更改
下表列出了 v2.0.0 相比较于 v1.4.1 版本,API 的更改情况:
|函数名|增加 `error` 返回值|行号计算方法变更<sup>\*</sup>|删除|新增|
|---|---|---|---|---|
|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](https://github.com/360EntSecGroup-Skylar/excelize/issues/349)。
#### 新增功能
* 新增 [`DuplicateRowTo()`](https://godoc.org/github.com/360EntSecGroup-Skylar/excelize#File.WriteTo) 方法, 支持根据给定的工作表名称(大小写敏感)和行号,在指定行后复制该行
* 工作表页面布局设置函数 [`SetPageLayout()`](https://godoc.org/github.com/360EntSecGroup-Skylar/excelize#File.SetPageLayout) 新增对页面布局方向设置的支持,解决了相关 [issue #318](https://github.com/360EntSecGroup-Skylar/excelize/issues/318)
* 工作表页面布局设置函数 [`SetPageLayout()`](https://godoc.org/github.com/360EntSecGroup-Skylar/excelize#File.SetPageLayout) 新增对页面纸张大小设置的支持
#### 问题修复
* 修复部分情况下,在样式格式中未指定单元格颜色填充时,创建了空白填充的问题
* 修复当工作表数据验证公式超过 `225` 个字符时,文件打开失败的问题,解决了相关 [issue #339](https://github.com/360EntSecGroup-Skylar/excelize/issues/339)
* 修复部分情况下,删除带有公式的单元格会导致文件损坏的问题,解决了相关 [issue #346](https://github.com/360EntSecGroup-Skylar/excelize/issues/346)
* 修复通过获取批注函数 [`GetComment()`](https://godoc.org/github.com/360EntSecGroup-Skylar/excelize#File.GetComment),从包含多个工作表的工作簿获取批注时,返回了错误的工作表名称的问题,解决了相关 [issue #345](https://github.com/360EntSecGroup-Skylar/excelize/issues/345)
* 修复获取工作表全部单元格函数 [`GetRows()`](https://godoc.org/github.com/360EntSecGroup-Skylar/excelize#File.GetRows) 返回多余的列的问题
* 修复部分情况下删除包含公式的工作表引起文档损坏的问题
#### 性能提升
* 单元格赋值系列函数、添加批注、图片、图表、超链接和形状函数的性能,均获得了大幅提升
* 新增重复图片检查,将用添加引用代替添加重复图片,解决了相关 [issue #359](https://github.com/360EntSecGroup-Skylar/excelize/issues/359)
下图是 v1.4.1 和 v2.0.0 版本下创建 12800 行 50 列工作表所执行时间和内存使用情况:
<center><img src="https://user-images.githubusercontent.com/2809468/56576273-7e7f1d80-65fa-11e9-8b47-7b171c5e67e3.png" alt="Excelize Go 语言 Excel 文档类库 v1.4.1 和 v2.0.0 性能对比" width="600"></center>
#### 其他
* 文档内容更新与修正
* 完善单元测试,增加 go1.12 版本下的单元测试
有疑问加站长微信联系(非本文作者)