Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选 2018 开源中国码云 Gitee 最有价值开源项目 GVP,目前已成为 Go 语言最受欢迎的 Excel 文档基础库。
GitHub: github.com/360EntSecGroup-Skylar/excelize
2020年5月11日,社区正式发布了 2.2.0 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,完整的更改列表可查看 changelog。
Release Notes
此版本中最显著的变化包括:
新增功能
- 下列 API 的参数将使用工作表索引代替工作表 ID:
GetSheetName
、GetSheetIndex
、GetActiveSheetIndex
和SetActiveSheet
, 相关 #485 - 新增
GetSheetList
API,获取与工作簿内顺序保持一致的工作表列表 - 新增
AddChartSheet
API,支持创建图表工作表,相关 issue #451 - 新增
UnsetConditionalFormat
API,支持从工作表中删除条件格式,相关 issue #571 - 新增
DeleteDataValidation
API,支持从工作表中删数据验证设置,相关 issue #348 - 新增
SetCellRichText
API,支持设置单元格换行与富文本样式,相关 issue #172 - 新增函数
InsertPageBreak
和RemovePageBreak
,支持从工作表中插入或删除换页符,相关 issue #492 - 函数
AddPivotTable
API 更改,支持设置数据透视表的数据标签与汇总函数,相关 issue #582 - 函数
AddPivotTable
支持设置数据透视表的筛选项,相关 issue #598 - 函数
AddPivotTable
支持数据透视表中的值、行或筛选项为空 - 导出函数
ExcelDateToTime
,提供将 Excel 时间格式转换为time.Time
数据类型 - 导出
Style
结构体,允许通过结构体指针或 JSON 字符创建样式,相关 issue #470
问题修复
- 修复当使用
SetConditionalFormat
为单元格设置条件格式时,>=
和<=
运算符不生效的问题, 解决 issue #608 - 修复特定情况下通过
StreamWriter
进行流式写入导致工作表损坏的问题,解决 issue #576 - 提高公式中的特殊字符兼容性,解决 issue #578
- 修复通过
DuplicateRowTo
进行复制行时,合并单元格未被复制的问题,解决 issue #586 - 修复特定情况下创建条件格式后,相邻单元格边框样式丢失问题,解决 issue #200
- 修复通过
GetComments
获取批注式部分批注数据无法获取问题,解决 issue #345 - 修复特定情况下通过
GetCellValue
获取单元格值错误问题,解决 issue #602 - 修复因某些情况下文档内部行内单元格缺少
r
属性而导致的GetCellValue
错误地返回空值问题 - 兼容单元格样式中的空值与默认值,修复部分情况下通过电子表格软件打开生成文档修改样式失效的问题,解决 issue #628
性能提升
- 优化内部函数
getRowHeight
,降低内存占用
其他
- 移除工作表计算属性使部分电子表格应用程序(如:金山 WPS™ Office)打开生成的文档进行重新计算公式
- 完善单元测试中的错误处理
- 包含简体中文、英语、法语、俄语、日语和韩语的多国语言文档网站更新
- 技术交流群
DingTalk Group ID: 30047129
QQ Group ID: 207895940
有疑问加站长微信联系(非本文作者)