Excelize 2.7.0 发布, 2023 年首个更新


Excelize 2.7.0 发布, 2023 年首个更新

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

开源代码

GitHub: github.com/xuri/excelize

Gitee: gitee.com/xurime/excelize

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

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

版本说明

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

兼容性提示

  • 升级至该版本需要您使用的 Go 语言为 1.16 或更高版本,以迁移不再支持的标准库 ioutil
  • 当给定工作表名称中存在无效字符时将返回错误,不再自动忽略无效字符
  • GetCellStyle 函数不再返回合并单元格区域左上角单元格的样式
  • 重命名以下 5 个导出数据类型和错误常量,具体更改详见官方文档中的更新说明
  • 移除了 54 项导出类型,具体更改详见官方文档中的更新说明
  • 移除了 2 个导出常量:OrientationPortrait  OrientationLandscape
  • 修改了以下 21 个函数的签名,使用结构体引用代替此前以 JSON 格式表示的选项参数,具体更改详见官方文档中的更新说明
  • 引入了 8 项新的函数代替现有函数,具体更改详见官方文档中的更新说明
  •  CellType 枚举值中添加 CellTypeFormula, CellTypeInlineString, CellTypeSharedString 并移除了 CellTypeString
  • 对添加批注 AddComment 函数的签名进行了更改,支持创建富文本批注,相关 issue #1204
  • 当 XML 反序列化异常时将返回错误以代替输出日志,函数 GetComments, GetDefaultFont  SetDefaultFont增加了 error 类型的错误返回值

新增功能

  • 新增 GetDataValidations  GetConditionalFormats 函数以支持获取数据验证设置和条件格式,相关 issue #827
  • 新增 ProtectWorkbook  UnprotectWorkbook 以提供工作簿保护设置支持
  • 新增 SetSheetCol 函数以支持按列设置单元格的值,相关 issue #1247
  • 新增 GetColStyle 函数以支持设置列样式,相关 issue #1293
  • 新增 SetSheetBackgroundFromBytes 函数以支持根据给定的图片数据设置工作表背景图片,相关 issue #1405
  • 新增导出变量 IndexedColorMapping 以支持内建索引颜色转换
  • 新增 20 项导出类型: AutoFilterListOptions, AutoFilterOptions, Chart, ChartAxis, ChartDimension, ChartLegend, ChartLine, ChartMarker, ChartPlotArea, ChartSeries, ChartTitle, ConditionalFormatOptions, PaneOptions, Panes, GraphicOptions, Shape, ShapeColor, ShapeLine, ShapeParagraph  TableOptions
  • 新增 2 项公式函数: AGGREGATE 和 SUBTOTAL
  • SaveWrite  WriteTo 函数支持指定保存选项,相关 issue #744
  • 使用 AddChart 函数添加图表时,支持为折线图设置是否使用平滑折线,相关 issue #1290
  • 使用 AddChart 函数添加图表时,支持设置自定义折线图线条颜色,相关 issue #1345
  • 使用 AddChart 函数添加图表时,支持设置自定义坐标轴字体样式,相关 issue #320
  • 添加图表函数 AddChart 支持创建三维折线图
  • 以下函数新增并发安全支持:SetColWidthGetColWidthSetColVisibleGetColVisibleSetColStyle  GetColStyle
  • 设置样式时,当给定的样式 ID 不存在时将返回错误,相关 issue #1323
  • 流式按行赋值时,若行号未递增将返回错误,以避免生成的工作簿损坏,相关 issue #1139
  • 按行流式写入工作表时,支持通过指定 RowOpts 为单元格设置样式,相关 issue #1354
  • 支持流式设置窗格,相关 issue #1047
  • 支持流式设置行内富文本单元格
  • 支持流式插入分页符
  • 新增 7 项导出错误信息: ErrUnprotectWorkbookErrUnprotectWorkbookPasswordErrStreamSetPanesErrSheetNameBlankErrSheetNameInvalidErrSheetNameLength  ErrSheetNameSingleQuote,以便开发者可根据不同的错误类型进行采取相应处理
  • 新增 5 项导出数据类型: HeaderFooterOptionsPageLayoutMarginsOptionsPageLayoutOptionsSheetPropsOptions  ViewOptions
  • 支持设置分级显示的明细数据方向
  • 支持读取和设置单元格字体的主题颜色和色调,相关 issue #1369
  • 支持读取带有符合 ISO 8061 标准的时间类型单元格的值
  • 支持设置和读取带有内建颜色索引的字体颜色
  • 工作簿关闭函数将清理由流式写入器生成的磁盘缓存文件
  • 支持添加或删除列时自动调整受影响的列样式
  • 通过 AddPicture 添加图片时,现已允许插入 SVG 格式图片

兼容性提升

  • 流式写入单元格时将以行内字符类型存储字符型单元格的值,相关 issue #1377
  • 保存工作簿时将跳过工作表中的不带有样式和属性的空白行,以减少生成文档的体积,相关 issue #1383

问题修复

  • 修复部分情况下读取带有内建数字格式样式的浮点数精度有误问题,解决 issue #1328,#1368 和 #1373
  • 修复部分情况下读取带有 AM/PM 数字格式样式的单元格有误问题,解决 issue #1338
  • 修复部分情况下删除批注时由于数组下标越界导致的 panic,解决 issue #1343
  • 修复部分情况下读取单元格的值时出现 panic 的问题,解决 issue #1384 和 #1415
  • 修复部分情况下误将文本解析为浮点型数值的问题,解决 issue #1360
  • 修复使用空字符创建工作表后生成的工作簿损坏问题,解决 issue #1361
  • 修复向工作表添加图片后,获取该图片内容为空的问题
  • 修复部分情况下插入行列后生成的工作簿损坏问题
  • 删除单元格公式时将删除公式计算链中的共享单元格引用,以修复部分情况下生成的文档损坏问题
  • 修复部分情况下未对工作表名称特殊字符及长度做正确处理的问题,解决 issue #1328
  • 修复部分情况下公式函数 OR 计算结果有误的问题
  • 修复在带有单一单元格区域引用的工作表中插入行列时,将收到异常的问题
  • 修复获取带有单一单元格区域引用合并单元格区域时,收到异常的问题
  • 修复部分情况下读取富文本单元格的值不完整问题
  • 修复流式写入时未转义 XML 字符导致的文档损坏问题,解决 issue #1391
  • 修复公式计算函数 ADDRESS 在工作表名称为空时计算结果有误的问题,解决 issue #1396
  • 修复部分情况下添加图片结果有误的问题,解决 issue #1404

性能优化

  • 提高流式合并单元格性能,相较于上一版本,耗时最高降低约 90%,内存使用最高减少约 86%
  • 优化按行流式写入工作表 SetRow 函数的性能,相较于上一版本,耗时最高降低约 19%

其他

  • Go Modules 依赖模块更新
  • 单元测试与文档更新
  • 优化内部变量与函数命名
  • 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新

致谢

感谢 Excelize 的所有贡献者,以下是为此版本提交代码的贡献者列表:

  • cdenicola (Cooper de Nicola)
  • chenliu1993
  • davidborry
  • patsak (Kostya Privezentsev)
  • dafengge0913
  • Beeb0p (Artem Tarasenko)
  • invzhi
  • zhangzitao (Zitao)
  • jtwatson (Joseph Watson)
  • carbin-gun (charles.deng)
  • harrison3000 (Harrison)
  • strivek (GaoFei)
  • gonghaibinx
  • martinmr (Martin Martinez Rivera)
  • zclark (Zach Clark)
  • March0715 (March)
  • renxiaotu
  • devloppper
  • jianxinhou
  • nesstord
  • Bayzet (Bayzet Tlyupov)
  • guoweikuang (郭伟匡)
  • qinyuguang (Gin)
  • liron-l (Liron Levin)

相關推薦

2023-04-11

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度

2023-01-30

GO语言通用代码生成器:仙童已发布第一个Beta版。修复了Excelize v2组件API变化引起的编译错误。此错误会引起Beta版以前所有版本代码生成物的编译错误。请用户迁徙到仙童Beta版。另有文档更新和更多检查。 这个错误是这么回事

2023-04-04

近期,FPC 社区发布了支持 LoongArch 架构的正式版本。此后的 LoongArch 架构操作系统发行版将可以直接基于上游社区版本进行构建,LoongArch 指令集架构再次得到重要基础开源社区的原生支持。 FPC(Free Pascal Compiler)是一款成熟、

2022-01-17

nbsp;Apache Ambari 转移到阁楼,在过去的两年里,我们只发布了一个 Ambari 版本(2.7.6),大多数提交者和 PMC 成员都没有积极参与到这个项目中来。 Apache Ambari 是一种基于 Web 的工具,支持 Apache Hadoop 集群的供应、管理和监控,

2023-12-01

于 12 月 2 日至 17 日期间收到货。     微软还发布了新版的 Bliss 壁纸,感兴趣的用户可前往 Xbox Gear Shop 进行下载。

2022-06-22

RISC-V International 宣布了 2022 年首批四项规范和扩展的批准 — RISC-V Efficient Trace (E-Trace)、RISC-V Supervisor 二进制接口 (SBI)、RISC-V 统一可扩展固件接口 (UEFI) 规范,以及 RISC-V Zmmul multiply-only 扩展。“此消息基于 2021 年的势头,其中代

2022-02-07

用户列表进行监督 但它不致力于: 重建社区修正 bug发布新版本 一个项目可以通过两种机制进入 Attic:管理项目的管理委员会(PMC)决定要该项目迁移进入 Attic,或者 Apache 软件基金会的董事会解散 PMC 并选择迁移该

2023-04-20

调侃:有 VueJS 当年的风范~ 经过三年的迭代,Furion 终于发布了首个 LTS 版本:v4.8.8 LTS,这个版本代表着 Furion 在 .NET 这个平台站住了脚,也给面向未来的 v5 版本腾出了不少开发时间。 Gitee 仓库地址:https://gitee.com/dotnetchina/Fu

2023-09-12

n 是另一种有前途的语言。JetBrains 公司于 2016 年首次正式发布 Kotlin 语言;2017 年,Google 宣布为 Android 版 Kotlin 提供一流支持。彼时,由于 Java(Android 的传统语言)被认为过于冗长,Kotlin 的受欢迎程度上升至 1%,并在当时的 TIOBE

2023-11-03

将揭示 M3 Max 到货后的实际性能表现。 相关阅读:苹果发布 M3 系列芯片,采用 3nm 工艺、支持“动态缓存”技术

2023-11-18

Rust 1.74.0 稳定版已正式发布,主要带来以下变化: 通过 Cargo 进行 Lint 配置 正如 RFC 3389 所提议,Cargo.tomlmanifest 现在支持一个[lints]表来配置来自编译器和其他工具的 lints 的报告级别(禁止、拒绝、警告、允许)。因

2023-05-15

Ruby 3.3.0-preview1 已发布,作为 3.3 的第一个预览版。Ruby 3.3 最重大的改动是添加了一个名为 RJIT 的新纯 Ruby JIT 编译器,使用 Lrama 作为解析器生成器,并带来许多性能改进。 RJIT Ruby 3.3.0-preview1 引入纯 Ruby JIT 编译器 RJIT 替换了 MJI

2023-06-07

苹果公司在 WWDC 2023 发布了旗下的操作系统更新,比如 macOS Sonoma、 iOS 17 、watchOS 10 和 iPadOS 17 等。 其中 iOS 17 的更新主要包括几个方面,新的通信功能、新的输入功能、新的共享功能以及一些新的稀奇古怪的功能。 通信功能主

2023-09-22

预训练模型技术和应用评估方法第1部分:金融大模型》发布成为国内首个金融行业大模型标准,为金融行业智能化的高质量发展提供了重要支撑,为全面促进大模型安全合规和可信发展提供了重要保障。 具体来看,该标准涵盖