Excelize 是 Go 语言编写的用于操作电子表格办公文档的开源基础库,基于 ISO/IEC 29500、ECMA-376 国际标准。可以使用它来读取、写入由 Microsoft Excel、WPS、Apache OpenOffice、LibreOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写支持,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。自 2016 年开源以来已成为云原生应用尤其是 Go 语言开发者在处理电子表格办公文档时的热门选择,正在被广泛应用于大型互联网公司、中小企业客户和初创公司。荣获 2022 年中国开源创新大赛一等奖、入选 2020 Gopher China - Go 领域明星开源项目 (GSP)、2018 年开源中国码云最有价值开源项目 GVP (Gitee Most Valuable Project)。

开源代码

GitHub: github.com/xuri/excelize

Gitee: gitee.com/xurime/excelize

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

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

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

兼容性提示

  • 将导出变量 ErrTableNameLength 重命名为 ErrNameLength
  • 将导出类型 PaneOptions 重命名为 Selection
  • 将导出类型 Comment 中的 Runs 字段重命名为 Paragraph
  • 移除了 Style 数据类型中的 Lang 字段
  • 移除了 ChartTitle 数据类型,使用 RichTextRun 类型代替
  • 更改 DecimalPlaces 字段的数据类型为指针类型
  • 修改了默认点与像素单位转换系数,相关 issue #279 和 #1536
  • 修改了 AddShape 函数的签名:将 func (f *File) AddShape(sheet, cell string, opts *Shape) error 改为 func (f *File) AddShape(sheet string, opts *Shape) error

新增功能

  • 新增导出错误变量 ErrExistsTableNameErrorFormControlValue
  • Options 数据类型中新增 ShortDatePattern, LongDatePattern, LongTimePatternCultureInfo 选项,支持设置长短日期与时间格式代码,相关 issue #1199
  • 新增用于表示区域代码的 CultureName 类型枚举
  • 新增函数 GetTablesDeleteTable 支持获取与删除表格,相关 issue #674 和 #1454
  • 新增函数 GetStyle 支持获取样式定义,相关 issue #314, #1520 和 #1521
  • 支持为单元格的值应用带有占位、对齐、舍入、货币、会计专用和转换选项的数字格式,并支持带有 812 种语言(位置)时间和日期类型的数字格式,相关 issue #660
  • 新增 10 项公式函数: ARRAYTOTEXT, FORECAST, FORECAST.LINEAR, FREQUENCY, INTERCEPT, ODDFYIELD, ODDLPRICE, ODDLYIELD, PROB 和 VALUETOTEXT
  • 增加对工作簿保存路径的检查,若路径长度超出限制将返回错误提示
  • 新增 GetPanes 函数,支持获取窗格和视图选区设置
  • 新增 3 项表单控件函数 AddFormControlGetFormControlsDeleteFormControl, 支持添加主要水平和垂直坐标轴标题,相关 issues #301 和 #1169
  • 添加图表函数 AddChart 支持添加主要水平和垂直坐标轴标题,相关 issue #1553
  • 添加图表函数 AddChart 支持添加次坐标轴,相关 issue #518
  • 添加图表函数 AddChart 支持设置图表富文本标题与图表标题格式,相关 issue #1588
  • 通过 AddShape 函数添加形状时,如果给定的形状类型不受支持,将返回异常错误
  • 支持读取带有日本年号数字格式的单元格,相关 issue #1590
  • 函数 GetPictures 支持读取带有单一单元格锚点位置的图片,相关 issue #1585
  • 函数 NewConditionalStyle 支持创建带有数字格式与保护属性的条件格式样式,相关 issue #1610

兼容性提升

  • 添加对带多字节文本的单元格字符长度检查,相关 issue #1517
  • 当创建带有重复名称的表格或自定义名称时,将返回错误异常
  • 提高单元格批注文本框大小显示效果在 KingSoft WPS 下的兼容性
  • 支持从自定义工作表属性设置中读取列宽度,相关 issue #1536
  • 修改内部工作表 XML 部件名称为大小写不敏感以提高兼容性,相关 issue #1591

问题修复

  • 修复因计算带有转义 XML 单元格的长度有误导致的,部分情况流式生成工作簿损坏问题,解决 issue #1518, #1519 和 #1530
  • 修复带有多行文本的单元格批注文本框大小异常问题
  • 修复了部分情况下,读取带有数字格式的文本单元格时,读取结果有误的问题,解决 issue #1523, #1528 和 #1533
  • 修复了并发安全函数中存在的竞态问题
  • 修复了部分情况下,对与单元格时间毫秒舍入精度结果有误的问题
  • 修复了部分情况下,读取带有 12 小时制数字格式的单元格时,时间结果有误的问题
  • 修复了部分情况下,计算带有 SUMIFS 和 AVERAGEIFS 函数的公式结果有误的问题,解决 issue #1564
  • 修复了公式计算引擎中基本算数运算符优先级问题导致的计算结果有误问题,解决 issue #1599
  • 修复部分情况下,带有跨工作表单元格引用公式计算结果有误的问题
  • 修复部分情况下,删除行后,工作表中的表格调整结果异常的问题,解决 issue #1539
  • 支持读取单元格中的多张图片,解决 issue #1548
  • 修复部分情况下,因读取图形对象位置有误导致的添加图片结果异常问题,解决 issue #1560
  • 删除行列时支持调整公式,修复部分情况下导致的文档损坏问题,解决 issue #1565
  • 修复了部分情况下,计算带有 CONCAT 和 CONCATENATE 函数的公式结果有误的问题,解决 issue #1569
  • 修复部分情况下,带有嵌套数字类型参数公式的计算结果有误问题,解决 issue #1582
  • 修复因内部图形对象计数器有误导致的部分情况下添加图片出现重复的问题,解决 issue #1584
  • 修复因部分情况下读取带有时间类型数字格式的单元格时,小时有误的问题,解决 issue #1587
  • 修复了部分情况下,获取合并单元格区域右下角单元格坐标时出现的 panic

性能优化

  • 优化内部正字表达式的执行速度,相关 issue #1532
  • 避免内部字节数组与字符串数据类型变量之间的转换,相关 issue #1541

其他

  • Go Modules 依赖模块更新
  • 简化了内部变量的声明与错误返回语句
  • 移除了内部带有 Unicode 编码的预设语言数字格式映射表
  • 移除了内部 xlsxTabColor 数据类型,使用 xlsxColor 代替 xlsxTabColor 数据类型
  • 单元测试与文档更新,单元测试行覆盖度提升 0.24%,达到 98.91%
  • 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新

致谢

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

  • IAkumaI (Valery Ozarnichuk)
  • sillydong (Chen Zhidong)
  • fudali113 (fudali)
  • Juneezee (Eng Zer Jun)
  • joehan109
  • yicixin (壹次心)
  • vb6iscool
  • chengcxy (chengxinyao)
  • lidp20
  • JDavidVR (David)
  • fsfsx
  • cnmlgbgithub

欢迎加入技术交流群 DingTalk Group ID: 30047129 QQ Group ID: 1302058237

Excelize 开源基础库 2.8.0 版本正式发布的更多相关文章

  1. 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!

    微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布 Weixin-App-Shop 是捷微团队开发的微信小程序商城开源项目,涵盖了微信商城的全部功能,能够快速发布简单易用的小 ...

  2. Vue CLI4.0版本正式发布了!一起来看看有哪些新的变化吧

    Vue CLI4.0版本正式发布 这个主要的版本更新主要关注底层工具的必要版本更新.更好的默认设置和其他长期维护所需的微调. 我们希望为大多数用户提供平稳的迁移体验. Vue CLI v4提供了对Ni ...

  3. Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算

    摘要:北京时间2023年1月9日,Volcano社区v1.7.0版本正式发布. 本文分享自华为云社区<Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算>,作者:华为云云 ...

  4. Volcano社区v1.6.0版本正式发布

    摘要:Volcano社区v1.6.0版本正式发布.此次版本增加了弹性作业管理.基于真实负载的动态调度. 基于真实负载的重调度.Volcano Job插件--MPI等多个新特性. 本文分享自华为云社区& ...

  5. 官宣!ElasticJob 3.0.0 版本正式发布

    ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成.它通过弹性调度.资源管控.以及 ...

  6. Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍 (转)

    前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...

  7. 小程序官网CMS开源项目出炉,Weixin-App-CMS 1.0 版本正式发布

    Weixin-App-CMS 是捷微团队开发的微信小程序CMS开源项目,涵盖了微网站的基本功能,能够快速发布简单易用的小程序网站.采用工具“微信web开发”上传小程序,即可快速体验发布体验小程序网站. ...

  8. Node.js开源应用OSN发布初始V1.0版本-见面版本

    Nodejs开源应用OSN初始版本V1.0发布,请参考本操作说明文档,有任何问题请留言 Nodejs开源应用OSN发布V1.0版本: OSChina收录地址: OSC收录地址:http://www.o ...

  9. RDIFramework.NET ━ .NET快速信息化系统开发框架钜献 V3.0 版本强势发布

    继上个版本“RDIFramework.NET V2.9版本”的推出,受到了重多客户的认可与选择,V2.9版本是非常成功与稳定的版本,感谢大家的认可与长期以来的关注与支持.V3.0版本在V2.9版本的基 ...

  10. 分布式边缘容器项目 SuperEdge v0.7.0 版本来袭!

    作者 SuperEdge 开发者团队,腾讯云容器中心TKE Edge团队 摘要 SuperEdge是基于原生Kubernetes的分布式边缘云容器管理系统,由腾讯云牵头,联合英特尔.VMware威睿. ...

随机推荐

  1. c++函数参数和返回值

    c++函数参数和返回值 函数存储位置 函数参数入栈顺序 初始化列表 函数的返回值 用参数引用来返回 返回一个参数指针 返回一个对象 总结 函数的几种变体 inline 函数 函数对象 lambda 函 ...

  2. [ARC114D] Moving Pieces on Line 解题报告

    AT题面 简要题意 有一个红色的数轴,相邻两个整点之间连有一条边,所有边初始为红色.数轴上有 \(n\) 个棋子,将一个棋子从 \(a\) 位置移到 \(b\) 位置,可以将 \((a,b)\) 之间 ...

  3. 计算机网络 VRRP和DHCP

    目录 一.vrrp概念 二.vrrp工作过程 三.vrrp优先级 四.vrrp实验 五.DHCP概念 六.DHCP工作过程 七.DHCP实验 一.vrrp概念 概念:称虚拟路由器冗余协议,当网关路由器 ...

  4. 03、SECS-I 协议介绍

    03.SECS-I 协议介绍 上一篇我们学习了 SECS-II 协议,对 SECS-II 协议有了初略的了解,现在我们再来一起学习 SECS-I 协议. 文章的内容基本上来自参考资料和自己看的文档,若 ...

  5. 【编程日记】搭建python开发环境

    0.相关确定 0.1确定操作系统 Python是一种跨平台的编程语言,这意味着它能够运行在所有主要的操作系统中.然而,在不同的操作系统(Windows/Mac/Linux)中,安装Python的方法存 ...

  6. Flutter调优--深入探究MediaQuery引起界面Rebuild的原因及解决办法

    前言 我们可以通过MediaQuery.of(context)方法获取到一些设备和系统的相关信息,比如状态栏的高度.当前是否是黑暗模式等等,使用起来相当方便,但是也要注意可能引起的页面rebuild问 ...

  7. Galaxy 生信平台(四):邮件与管理员配置

    前几天看到中山大学和国家基因库合作开发的 Translatome Workbench 翻译组学可视化在线数据分析平台 (db.cngb.org/galaxy/) 的推送信息,也上去看了一下,工具和教程 ...

  8. JUC同步锁原理源码解析三----CountDownLatch、CyclicBarrier

    JUC同步锁原理源码解析三----CountDownLatch.CyclicBarrier CountDownLatch.CyclicBarrier的来源 1.CountDownLatch的来源 A ...

  9. SQL专家云快速解决阻塞

    背景 当数据库突然产生严重阻塞时,运维人员要快速找到阻塞的源头并处理,让业务快速恢复.但是大多数运维人员只掌握了sp_who2.sp_lock等简单的语句,存在以下不足: 找不到真正的源头,过程中会误 ...

  10. MRS-MRS相同功能代码管理应用笔记

    MRS相同功能代码管理应用笔记 使用 MounRiver(以下简称 MRS )进行 RISC-V 单片机开发时,工程目录下往往存在多个文件夹与文件,我们只需要着重关注截图中红框所示的部分,它们自上而下 ...