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

简介: Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,2021年8月2日,社区正式发布了 2.4.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化,下面是有关该版本更新内容的摘要。

github.com/xuri/excelize

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

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

兼容性提升

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

问题修复

  • 修复部分情况下 12/24 制小时时间格式解析异常的问题,解决 issue #823 和 issue #841
  • 修复部分情况下无法通过 GetComments 获取批注的问题,解决 issue #825
  • 修复设置和获取批注时支持多个批注作者,解决 issue #829 和 #830
  • 修复命名空间地址解析异常而产生重复命名空间,导致删除再创建同名工作表后的生成文档损坏问题,解决 issue #834
  • 修复当设置工作表分组默认属性 showOutlineSymbols、summaryBelow 和 summaryRight 为 false 时,设置失效的问题
  • 修复部分情况下 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
  • 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新
目录
相关文章
|
存储 JavaScript 前端开发
“探索前后端分离架构下的Vue.js应用开发“
“探索前后端分离架构下的Vue.js应用开发“
407 0
|
8月前
|
人工智能 弹性计算 运维
|
存储 人工智能 API
Qoder 正式开放订阅,Credits 耐用度提升1/3
Qoder 自 2025 年 8 月 21 日公测以来,以最强的上下文工程能力以及 Repo Wiki、Quest Mode 等广受好评的产品功能,收获了全球开发者的支持和喜爱。今天,Qoder 面向全球用户正式推出付费订阅计划,助力开发者开启高效流畅的编程之旅。
11211 2
|
存储 API 数据安全/隐私保护
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
4230 6
|
传感器 JavaScript 前端开发
基于Arduino的智能恒温器
基于Arduino的智能恒温器
571 0
|
机器学习/深度学习 人工智能 算法
【人工智能】第二部分:ChatGPT的架构设计和训练过程
【人工智能】第二部分:ChatGPT的架构设计和训练过程
771 4
|
存储 BI Go
Excelize 开源基础库 2.9.0 版本正式发布
经过近八个月的准备,Excelize 今天发布了 2.9.0 正式版,包含了新增功能、问题修复、兼容性提升等80多项更新,来自多个国家的30多位开发者为此版本贡献了代码。
320 1
Excelize 开源基础库 2.9.0 版本正式发布
|
C语言
C语言循环结构详解:for、while、do while、break与continue
C语言循环结构详解:for、while、do while、break与continue
903 0
|
Java 程序员 编译器
机器语言
机器语言
1274 2

热门文章

最新文章