Excelize 发布 2.6.0 版本,功能强大的 Excel 文档基础库

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库。2022年4月11日,社区正式发布了 2.6.0 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要。

github.com/xuri/excelize

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 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

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

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

兼容性提示

  • 重命名导出常量 NameSpaceDublinCoreMetadataIntiativeNameSpaceDublinCoreMetadataInitiative 以修复拼写错误
  • 重命名导出变量 ErrUnsupportEncryptMechanismErrUnsupportedEncryptMechanism
  • 重命名导出变量 ErrDataValidationFormulaLenthErrDataValidationFormulaLength
  • 重命名导出变量 ErrDefinedNameduplicateErrDefinedNameDuplicate
  • 移除了导出变量 XMLHeaderByte
  • 移除了设置数据数据验证列表函数 SetSqrefDropList 的第二个形参 isCurrentSheet 和异常返回值
  • 移除了行迭代器中的导出字段 TotalRows

新增功能

  • ProtectSheet 新增支持通过指定的算法保护工作表,支持的算法包括: XOR、MD4、MD5、SHA1、SHA256、SHA384 和 SHA512
  • UnprotectSheet 支持通过指定第二个可选参数在移除工作表保护时验证密码
  • 新增 71 项公式函数: AVERAGEIFS, BETADIST, BETA.DIST, BETAINV, BETA.INV, BINOMDIST, BINOM.DIST, BINOM.DIST.RANGE, BINOM.INV, CHIINV, CHITEST, CHISQ.DIST, CHISQ.DIST.RT, CHISQ.INV, CHISQ.INV.RT, CHISQ.TEST, CONFIDENCE.T, CORREL, COVAR, COVARIANCE.P, CRITBINOM, ERROR.TYPE, EXPON.DIST, EXPONDIST, F.DIST, F.DIST.RT, FDIST, F.INV, F.INV.RT, FINV, FORMULATEXT, F.TEST, FTEST, GAMMA.DIST, GAMMADIST, GAMMA.INV, GAMMAINV, GAMMALN.PRECISE, GAUSS, HOUR, HYPGEOM.DIST, HYPGEOMDIST, INDIRECT, LOGINV, LOGNORM.DIST, LOGNORMDIST, LOGNORM.INV, MODE, MODE.MULT, MODE.SNGL, NEGBINOM.DIST, NEGBINOMDIST, PHI, SECOND, SERIESSUM, SUMIFS, SUMPRODUCT, SUMX2MY2, SUMX2PY2, SUMXMY2, T.DIST, T.DIST.2T, T.DIST.RT, TDIST, TIMEVALUE, T.INV, T.INV.2T, TINV, T.TEST, TTEST, TYPE
  • 保存或另存为工作簿时增加对文件扩展名进行检查
  • 支持设置工作簿视图模式和显示/隐藏标尺
  • 引入依赖库 NFP (number format parser) 以增加对自定义时间、日期和文本类型数字格式的支持,可对包含 19 种语言(南非荷兰语、孟加拉语、汉语、英语、法语、德语、奥地利语、爱尔兰语、意大利语、俄语、西班牙语、泰语、藏语、土耳其语、威尔士语、沃洛夫语、科萨语、彝语和祖鲁语)本地月份名称和 12 小时制格式的数字格式表达式进行解析,相关 issues #660, #764, #1093, #1112 和 #1133
  • 新增 API: SetWorkbookPrOptionsGetWorkbookPrOptions 支持设置和获取工作簿中的 FilterPrivacyCodeName 属性,以解除部分情况下向工作簿中嵌入 VBA 工程时的限制,相关 issue #1148
  • 公式计算引擎支持中缀运算符后包含无参数公式函数的计算
  • 支持以文本形式读取布尔型单元格的值
  • 通过 AddChart 函数添加圆环图时,支持指定圆环图内径大小,解决 issue #1172
  • 新增导出 4 项错误信息 ErrPasswordLengthInvalid, ErrUnsupportedHashAlgorithm, ErrUnsupportedNumberFormat, ErrWorkbookExt,以便开发者可根据不同的错误类型进行采取相应处理

兼容性提升

  • 提升与 LibreOffice 电子表格应用程序的兼容性,修复在 LibreOffice 中打开的工作表名包含空格时,自动过滤器失效的问题,解决 issue #1122
  • 提升对工作簿中替代内容的支持,保留工作簿、工作表以及 drawingML 中的替代内容
  • 提升与页面设置中打印质量 DPI 设置属性的兼容性

问题修复

  • 修复另存为工作簿时,页面布局属性丢失的问题,解决 issue #1117
  • 修复部分情况下,对工作表进行修改后合并单元格区域未更新的问题
  • 修复样式解析异常导致的粗体和部分其他字体样式丢失问题,解决 issue #1119
  • 修复部分情况下将文档保存为 XLAM / XLSM / XLTM / XLTX 格式后文档损坏的问题
  • 单元格样式支持继承行/列样式,以修复对工作表进行修改后合并单元格区域单元格样式不正确的问题,解决 issue #1129
  • 修复部分情况下获取单元格样式 ID 错误的问题
  • 修复编号为 42 的内建数字格式定义错误的问题
  • 修复部分情况下数字精度解析错误的问题
  • SetCellDefault 支持设置非数字类型单元格的值,解决 issue #1139
  • 修复部分情况下另存为工作簿时,显示或隐藏工作表标签属性丢失的问题,解决 issue #1160
  • 修复部分情况下嵌套公式计算错误的问题,解决 issue #1164
  • 修复部分情况下公式计算结果精度不准确以及在 x86 和 arm64 架构 CPU 下公式计算结果精度不一致的问题
  • 修复部分情况下使用科学记数法表示的数值解析失败的问题
  • 修复图表轴最大值最小值为 0 时不起作用的问题

性能优化

  • 提高使用行迭代器进行流式读取的性能,当读取包含大规模数据的电子表格文档时,内存开销相较于上一版本降低最高约 50%,内存垃圾回收次数降低约 80%

其他

  • Go Modules 依赖模块更新
  • 单元测试与文档更新
  • 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新
目录
相关文章
|
26天前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
105 5
|
26天前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
73 8
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
26天前
|
Java API Apache
|
3月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
3月前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
43 6
|
4月前
内存或磁盘不足,excel无法再次打开或保存任何文档
内存或磁盘不足,excel无法再次打开或保存任何文档
|
5月前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
|
5月前
|
存储 开发工具 git
好的git管理方法,标明项目_编号_(功能,不过还是在没有bug出现时就提交为好)+Excel表管理的格式
好的git管理方法,标明项目_编号_(功能,不过还是在没有bug出现时就提交为好)+Excel表管理的格式
|
6月前
|
机器学习/深度学习 安全 关系型数据库
Excel VBA的分层对象集合及外部对象库
基于对象的Excel VBA的分层对象集合及外部对象库