Excelize 发布 2.4.1 版本,新增并发安全支持

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选 2020 Gopher China - Go 领域明星开源项目(GSP)、2018 年开源中国码云最有价值开源项目 GVP (Gitee Most Valuable Project),目前已成为 Go 语言最受欢迎的 Excel 文档基础库。

开源代码

GitHub: github.com/xuri/excelize

Gitee: gitee.com/xurime/excelize

中文文档: xuri.me/excelize/zh-hans

2021年8月2日,社区正式发布了 2.4.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,完整的更改列表可查看 changelog

此版本中最显著的变化包括:

兼容性提示

Go Modules 包引用地址调整为 github.com/xuri/excelize/v2

新增功能

  • 新增流式设置工作表列宽度支持,相关 issue #625
  • 新增流式创建合并单元格支持,相关 issue #826
  • 公式计算引擎新增 2 项公式函数支持: BESSELK, BESSELY
  • 公式计算引擎支持自定义名称引用,相关 issue #856
  • 添加图表时支持设置不显示主要横纵坐标轴
  • 通过 AddPivotTable 创建数据透视表支持通过自定义名称动态引用数据源
  • 以下函数新增支持并发安全调用,相关 issue #861

    • AddPictureGetPicture 并发插入/获取图片
    • RowsCols 并发行/列迭代
    • SetSheetRow 并发按行赋值
    • SetCellStyle 并发设置单元格样式
    • NewStyle 并发创建样式
  • 导出 24 个内部异常消息

兼容性提升

  • 提升内部默认 XML 命名空间兼容性,修复部分情况下生成文档损坏的问题
  • 兼容带有非标准页面布局属性数据类型的电子表格文档,避免打开失败的问题
  • 增加内部共享字符表计数
  • 解除通过给定的时间设置单元格的值时,需要协调世界时 (UTC) 的限制,相关 issue #409
  • 增加对内部 XML 控制字符的兼容
  • 重命名导出字段 File.XLSXFile.Pkg
  • 修改 NewSheet, GetSheetIndex, DeleteSheet 对工作表名称大小写不敏感,相关 issue #873
  • 修复条件格式与数据透视表的兼容性问题,解决 issue #883
  • 改进与页面布局中无效的首页编号属性的兼容性
  • SetCellRichText 增加字符数上限检查并修复保留字符丢失问题

问题修复

  • 修复部分情况下 12/24 制小时时间格式解析异常的问题,解决 issue #823 和 issue #841
  • 修复部分情况下无法通过 GetComments 获取批注的问题,解决 issue #825
  • 修复设置和获取批注时支持多个批注作者,解决 issue #829 和 #830
  • 修复命名空间地址解析异常而产生重复命名空间,导致删除再创建同名工作表后的生成文档损坏问题,解决 issue #834
  • 修复当设置工作表分组默认属性 showOutlineSymbolssummaryBelowsummaryRightfalse 时,设置失效的问题
  • 修复部分情况下 GetRows 返回冗余工作表尾部空行的问题,解决 issue #842
  • 修复部分情况下获取获取单元格的值时,未返回带有公式的空单元格的问题,解决 issue #855
  • 修复部分情况下 IF 公式条件运算错误问题,解决 issue #858
  • 修复通过 GetRowHeight 获取行高度错误的问题
  • 修复部分情况下因范围解析异常导致获取和删除自定义名称错误的问题,解决 issue #879
  • 修复设置自定义名称时关联工作表索引错误的问题
  • 修复设置列样式时已有单元格样式未被更新的问题,解决 issue #467
  • 修复使用非法数据引用范围创建数据透视表时导致的潜在 panic 的问题
  • 修复部分情况下读取数字精度异常的问题,解决 issue #848 和 #852
  • 修复设置数据验证规则时,部分情况下因未进行 XML 字符转义处理导致生成文档损坏的问题,解决 issue #971
  • 修复设置数据验证规则长度校验不准确问题,解决 issue #972
  • 修复由时间解析异常导致的,部分情况下读取带有时间或日期数字格式单元格时 CPU 资源占用率过高问题,解决 issue #974
  • 修复部分情况下,当自定义数字格式为日期时,月份解析失败的问题

性能优化

  • 通过 Save 保存或 SaveAs 另存文档时的内占用降低约 19%

其他

  • 修复潜在的代码安全问题 CWE-190 和 CWE-681
  • Go Modules 依赖模块更新
  • 单元测试与文档更新
  • 持续集成服务改用 GitHub Action
  • 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新

xuri
99 声望8 粉丝

软件工程师,《Excelize权威指南》作者