Go 语言 Excel 类库 Excelize 2.0.0 版本发布

xuri · · 3004 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
<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|&times;|&times;|&radic;|&times;| |TitleToNumber|&times;|&times;|&radic;|&times;| |SplitCellName|&times;|&times;|&times;|&radic;| |JoinCellName|&times;|&times;|&times;|&radic;| |ColumnNameToNumber|&times;|&times;|&times;|&radic;| |ColumnNumberToName|&times;|&times;|&times;|&radic;| |CellNameToCoordinates|&times;|&times;|&times;|&radic;| |CoordinatesToCellName|&times;|&times;|&times;|&radic;| |DuplicateRowTo|&times;|&times;|&times;|&radic;| |SetCellFloat|&times;|&times;|&times;|&radic;| |SetCellStyle|&radic;|&times;|&times;|&times;| |InsertCol|&radic;|&times;|&times;|&times;| |RemoveCol|&radic;|&times;|&times;|&times;| |RemoveRow|&radic;|&radic;|&times;|&times;| |InsertRow|&radic;|&radic;|&times;|&times;| |DuplicateRow|&radic;|&times;|&times;|&times;| |SetRowHeight|&radic;|&times;|&times;|&times;| |GetRowHeight|&radic;|&times;|&times;|&times;| |GetCellValue|&radic;|&times;|&times;|&times;| |GetCellFormula|&radic;|&times;|&times;|&times;| |GetCellHyperLink|&radic;|&times;|&times;|&times;| |SetCellHyperLink|&radic;|&times;|&times;|&times;| |SetCellInt|&radic;|&times;|&times;|&times;| |SetCellBool|&radic;|&times;|&times;|&times;| |SetCellStr|&radic;|&times;|&times;|&times;| |SetCellDefault|&radic;|&times;|&times;|&times;| |GetCellStyle|&radic;|&times;|&times;|&times;| |SetCellValue|&radic;|&times;|&times;|&times;| |MergeCell|&radic;|&times;|&times;|&times;| |SetSheetRow|&radic;|&times;|&times;|&times;| |SetRowVisible|&radic;|&radic;|&times;|&times;| |GetRowVisible|&radic;|&radic;|&times;|&times;| |SetRowOutlineLevel|&radic;|&radic;|&times;|&times;| |GetRowOutlineLevel|&radic;|&radic;|&times;|&times;| |GetRows|&radic;|&times;|&times;|&times;| |Columns|&radic;|&times;|&times;|&times;| |SearchSheet|&radic;|&times;|&times;|&times;| |GetPicture|&radic;|&times;|&times;|&times;| |AutoFilter|&radic;|&times;|&times;|&times;| |GetColVisible|&radic;|&times;|&times;|&times;| |SetColVisible|&radic;|&times;|&times;|&times;| |GetColOutlineLevel|&radic;|&times;|&times;|&times;| |SetColOutlineLevel|&radic;|&times;|&times;|&times;| |SetColWidth|&radic;|&times;|&times;|&times;| |GetColWidth|&radic;|&times;|&times;|&times;| |GetMergeCells|&radic;|&times;|&times;|&times;| |ProtectSheet|&radic;|&times;|&times;|&times;| |UnprotectSheet|&radic;|&times;|&times;|&times;| |UpdateLinkedValue|&radic;|&times;|&times;|&times;| |SetSheetVisible|&radic;|&times;|&times;|&times;| |adjustHelper|&radic;|&times;|&times;|&times;| |adjustMergeCells|&radic;|&times;|&times;|&times;| |adjustAutoFilter|&radic;|&times;|&times;|&times;| |prepareCell|&radic;|&times;|&times;|&times;| |setDefaultTimeStyle|&radic;|&times;|&times;|&times;| |timeToExcelTime|&radic;|&times;|&times;|&times;| |addDrawingChart|&radic;|&times;|&times;|&times;| |addDrawingVML|&radic;|&times;|&times;|&times;| |addDrawingPicture|&radic;|&times;|&times;|&times;| |getTotalRowsCols|&radic;|&times;|&times;|&times;| |checkRow|&radic;|&times;|&times;|&times;| |addDrawingShape|&radic;|&times;|&times;|&times;| |addTable|&radic;|&times;|&times;|&times;| |workSheetReader|&radic;|&times;|&times;|&times;| |copySheet|&radic;|&times;|&times;|&times;| \* 从版本 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 版本下的单元测试

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

3004 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传