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 年开源中国码云最有价值开源项目 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
Save
、Write
和WriteTo
函数支持指定保存选项,相关 issue #744- 使用
AddChart
函数添加图表时,支持为折线图设置是否使用平滑折线,相关 issue #1290 - 使用
AddChart
函数添加图表时,支持设置自定义折线图线条颜色,相关 issue #1345 - 使用
AddChart
函数添加图表时,支持设置自定义坐标轴字体样式,相关 issue #320 - 添加图表函数
AddChart
支持创建三维折线图 - 以下函数新增并发安全支持:
SetColWidth
、GetColWidth
、SetColVisible
、GetColVisible
、SetColStyle
和GetColStyle
- 设置样式时,当给定的样式 ID 不存在时将返回错误,相关 issue #1323
- 流式按行赋值时,若行号未递增将返回错误,以避免生成的工作簿损坏,相关 issue #1139
- 按行流式写入工作表时,支持通过指定
RowOpts
为单元格设置样式,相关 issue #1354 - 支持流式设置窗格,相关 issue #1047
- 支持流式设置行内富文本单元格
- 支持流式插入分页符
- 新增 7 项导出错误信息:
ErrUnprotectWorkbook
、ErrUnprotectWorkbookPassword
、ErrStreamSetPanes
、ErrSheetNameBlank
、ErrSheetNameInvalid
、ErrSheetNameLength
和ErrSheetNameSingleQuote
,以便开发者可根据不同的错误类型进行采取相应处理 - 新增 5 项导出数据类型:
HeaderFooterOptions
、PageLayoutMarginsOptions
、PageLayoutOptions
、SheetPropsOptions
和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)
欢迎加入 Slack 频道、Telegram 群组 或技术交流群 DingTalk Group ID: 30047129
QQ Group ID: 207895940
Excelize 2.7.0 发布, 2023 年首个更新的更多相关文章
- ZABBIX 2.1.0 发布,分布式系统监控
ZABBIX 2.1.0 发布了,这相当是 ZABBIX 2.2 的首个 Alpha 版本,包括了新的主要的功能和改进. 主要包括如下几个方面的提升: 性能提升 可加载模块 移除对未知事件的支持 应用 ...
- SuperSocket 2.0 发布第一个预览版, 另寻找Yang Fan哥哥
昨天,SuperSocket的作者发布了2.0版本的第一个预览版.SuperSocket 2.0 是一个经过全新设计的,第一个完全基于.NET Core的版本.作者正在积极尝试提供更简单易用的API的 ...
- Visual Studio Code 1.0发布,支持中文在内9种语言
Visual Studio Code 1.0发布,支持中文在内的9种语言:Simplified Chinese, Traditional Chinese, French, German, Italia ...
- Apache Flume 1.7.0 发布,日志服务器
Apache Flume 1.7.0 发布了,Flume 是一个分布式.可靠和高可用的服务,用于收集.聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型.这是一个可靠.容错的服务. 本次更 ...
- Percona Server 5.6.33-79.0 发布
Percona Server 5.6.33-79.0 发布了,该版本基于 MySQL 5.6.33,包含了所有的 bug 修复,是Percona Server 5.6 系列中的正式版本.该版本主要是修 ...
- Rubinius 2.0 发布,Ruby 虚拟机
Rubinius 2.0 发布了,官方发行说明请看这里. Rubinius是一个运行Ruby程序的虚拟机,其带有Ruby的核心库. Rubinius的设计决定了其调试功能的强大,使得在运行时常规的Ru ...
- Restful.Data v2.0发布,谢谢你们的支持和鼓励
v1.0发布后,承蒙各位博友们的热心关注,也给我不少意见和建议,在此我真诚的感谢 @冰麟轻武 等朋友,你们的支持和鼓励,是这个开源项目最大的推动力. v2.0在除了细枝末节外,在功能上主要做了一下更新 ...
- 网页动物园2.0发布,经过几个月的努力,采用JAVA编写!
网页动物园2.0发布,经过几个月的努力,采用JAVA编写! 网页动物园2.0 正式发布!游戏发布 游戏名称: 网页动物园插件 游戏来源: 原创插件 适用版本: Discuz! X1.5 - X3.5 ...
- Redisson-Parent 2.5.0 和 3.0.0 发布
Redisson-Parent 2.5.0 和 3.0.0 发布了,Redisson 是基于 Redis 服务之上构建的分布式.可伸缩的 Java 数据结构,高级的 Redis 客户端. Rediss ...
- Rsync 3.1.0 发布,文件同步工具
文件同步工具Rsync 3.1.0发布.2013-09-29 上一个版本还是2011-09-23的3.0.9 过了2年多.Rsync基本是Linux上文件同步的标准了,也可以和inotify配合做实时 ...
随机推荐
- Linux 下搭建 Hadoop 环境
Linux 下搭建 Hadoop 环境 作者:Grey 原文地址: 博客园:Linux 下搭建 Hadoop 环境 CSDN:Linux 下搭建 Hadoop 环境 环境要求 操作系统:CentOS ...
- Hadoop集群简单入门
Hadoop集群搭建 自己配置Hadoop的话太过复杂了,因为自己着急学习,就使用了黑马的快照.如果小伙伴们也想的话可以直接看黑马的课程,快照的话关注黑马程序员公众号,输入Hadoop就能获取资料,到 ...
- .Net Core 3.0 对 MongoDB 的多条件(两种)查询操作
前言 在日常开发中,偶尔会用到 MongoDB 的数据操作,也花费了一些时间调试,因此在此处记录一下,共同进步. 废话少说,出招吧! 正文 2.1 准备工作 首先需要引入 .Net 平台链接 Mo ...
- shardingsphere-jdbc 水平分表学习记录
放在自己博客里搬过来一份~ 前司使用的是自己魔改的TDDL,在家时间比较多就尝试学一些业内比较常用的中间件. 这里记录一下学习中遇到的一些问题. 环境 设置的比较简单(太懒了就测试了几个表), 两个分 ...
- 关于入门深度学习mnist数据集前向计算的记录
import osimport lr as lrimport tensorflow as tffrom pyspark.sql.functions import stddevfrom tensorfl ...
- JAVA代码审计之xss
java_sec_code xss 补充和回忆一下一些开发基础 @RestController @RequestMapping(value = "/xss") public cla ...
- 【题解】CF919D Substring
题面传送门 解决思路: DP 与拓扑结合.\(f_{i,j}\) 表示到 \(i\) 位置 \(j\) 的最大次数. 将 \(a \sim z\) 转成数字 \(0\sim 25\) ,方便存储. 考 ...
- 【题解】CF45I TCMCF+++
题面传送门 题目描述 有 \(n\) 个数 \(a_i\) 请你从中至少选出一个数,使它们的乘积最大 解决思路 对于正数,对答案一定有贡献(正数越乘越大),所以输入正数时直接输出即可. 对于负数,如果 ...
- 面试 个人摸底监测 考察JavaScript基础 (第三天)
01,如何开启JS严格模式?JS严格模式有什么特点? 两种方式 全局开启在js开头加上 'use strict' 局部开启,在作用域开头加上 function fn(){ 'use strict' } ...
- Pycharm2022.1.3安装教程(包含基础使用配置)
pycharm的下载安装及使用 以我的Pycharm2022.1.3为例 首先去官网下载professtional(专业版)版本 2022.1.3版本Pycharm软件 https://www.jet ...