Excelize 是 Go 语言编写的用于操作电子表格办公文档的开源基础库,基于 ISO/IEC 29500、ECMA-376 国际标准。可以使用它来读取、写入由 Microsoft Excel、WPS、Apache OpenOffice、LibreOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写支持,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。

开源代码

GitHub: github.com/xuri/excelize

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

2024年2月26日,社区正式发布了 2.8.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,此版本中最显著的变化包括:

兼容性提示

  • 升级至该版本需要您使用的 Go 语言为 1.18 或更高版本,以升级依赖库 golang.org/x/net
  • 将数据类型 HeaderFooterOptions 中的字段 AlignWithMarginsScaleWithDoc 修改为指针类型
  • 移除了未使用的导出类型 ShapeColor

新增功能

  • 新增函数 SetCellUint 支持设置无符号整型数
  • 新增函数 GetPictureCells 支持获取图片单元格坐标
  • 新增函数 GetConditionalStyle 支持获取条件格式样式定义
  • 新增函数 GetHeaderFooter 支持获取工作表页眉页脚控制字符设置
  • 新增函数 AddSlicer 支持为表格和数据透视表添加切片器
  • 新增函数 GetPivotTables 支持获取数据透视表
  • 新增函数 DeletePivotTable 支持删除数据透视表
  • 数据类型 PivotTableOptions 中添加了新的字段 Name 以支持创建数据透视表时指定自定义数据透视表名称
  • 新增 7 项公式函数:DBCS、SEARCH、SEARCHB、TEXT、TEXTAFTER、TEXTBEFORE 和 xlfn.ANCHORARRAY
  • 新增 ChartLineType 枚举类型,以支持设置图表区域边框线型
  • 数据类型 Chart 中添加了新的字段 Border 以支持设置图表区域边框类型
  • 数据类型 ChartLine 中添加了新的字段 Type 以支持设置图表线型
  • 新增文档对象关系部件名称与命名空间变量 NameSpaceSpreadSheetXR10ContentTypeSlicerContentTypeSlicerCacheSourceRelationshipSlicer
  • 新增扩展资源标识常量 ExtURIPivotCacheDefinition
  • 允许在自定义名称、表格名称和数据透视表名称中使用点字符
  • 删除工作表中的表格时,将保留表格区域全部单元格的值
  • 支持读取带有分数数字格式的单元格
  • 删除图片时,如果图片仅有一处引用,将同时从工作簿内部删除对应的图片文件,以减少生成工作簿的体积并消除由此产生的潜在安全风险
  • 支持为批注框设置自定义宽度和高度
  • 插入或删除行列时,支持更新条件格式、数据验证、自定义名称、图形对象、单元格公式、易失性函数中的单元格坐标引用
  • 新增 6 项新增条件格式类型:“特定文本”、“空值”、“无空值”、“错误”、“无错误”和“发生日期”
  • 公式计算引擎支持计算带有多重负号的单元格公式
  • 复制行时支持复制条件格式与数据验证
  • 设置行高度函数 SetRowHeight 支持通过指定行高度为 -1 移除自定义行高度设置
  • 当给定的行高度无效时,函数 SetRowHeight 将返回错误提示信息
  • 添加图表函数 AddChart 支持设置图表中的数据标签位置
  • 添加图表函数 AddChart 支持设置图表区域、绘图区域和数据标记的填充色和透明填充,在 ChartChartPlotAreaChartMarker 数据类型中添加了 Fill 选项
  • 添加图表函数 AddChart 支持设置图表坐标轴文字字体、字号和删除线格式
  • 数据类型 ChartSeries 中新增了 DataLabelPosition 字段,用于指定图表中各数据系列数据标签的位置
  • 数据类型 Chart 中新增了 BubbleSize 字段,用于设置气泡图和三维气泡图的气泡大小
  • 新增导出数据类型 ChartDataLabelPositionType
  • 获取图片单元格函数 GetPictureCells 和获取图片函数 GetPictures 支持读取由 Kingsoft WPS Office 创建的嵌入单元格图片
  • 设置条件格式函数 SetConditionalFormat 支持批量为多个单元格区域设置条件格式
  • 重命名工作表时支持更新自定义名称
  • 新增 GetBaseColor 函数,支持读取首选十六进制颜色代码
  • 公式计算引擎支持读取日期类型单元格的值
  • 单元格值读取函数支持继承使用 OpenReader 函数打开文档时所指定的 Options 选项设置

兼容性提升

  • 提升了对内部带有绝对路径绘图部件工作簿的兼容性
  • 提升了对内部带有浮点型 tabRatio 属性值工作簿部件的兼容性
  • 提升了读取带有空的自定义数字格式单元格的兼容性
  • 提升了与不支持默认主题部件命名空间电子表格预览程序的兼容性
  • 提升了单元格批注形状与 KingSoft WPS Office 的兼容性
  • 保存工作簿时对内部部件进行排序,以确保在不改变工作簿内容时生成的文件具有一致的哈希值

问题修复

  • 添加对公式函数 MID 和 MIDB 中 num_chars 参数的检查,以防止出现负数导致的 panic
  • 修复部分情况下,公式函数 LEN、LOWER、PROPER、REPT、UPPER 和 IF 的计算结果为空的问题
  • 修复部分情况下,计算公式函数 CHITEST 和 MMULT 时出现 panic 的问题
  • 修复 v2.8.0 中引入的问题,通过创建特殊自定义名称的方式设置打印区域和打印标题时不再返回错误
  • 修复 v2.8.0 中引入的问题,修复了由于内部样式部件中索引颜色和 MRU 颜色缺省值处理有误导致的生成工作簿损坏问题
  • 修复 v2.8.0 中引入的问题,修复了特定情况下读取带有数字格式的单元格结果为空的问题
  • 修复 v2.7.1 中引入的问题,修复了气泡图和三维气泡图中不显示气泡的问题
  • 修复因内部工作表 ID 处理有误导致的特定情况下通过 AutoFilter 函数添加自动过滤器时出现的 panic
  • 修复部分情况下在工作表中添加表格导致的工作表损坏问题
  • 修复部分情况下读取带有时间类型数字格式单元格的值有误的问题
  • 支持计算字符型公式单元格的值
  • 修复在带有单元格表格的工作簿中添加表格时,表格 ID 生成有误的问题
  • 修复部分情况下工作簿内容关系部件丢失的问题
  • 升级数字格式表达式解析器,以修复对于带有自定义文本的数字格式表达式格式化结果有误问题
  • 更新了简体中文和繁体中文语言的预设数字格式列表
  • 修复了部分情况下,自定义数字格式索引生成有误的问题
  • 修复通过删除后再添加表格方式更新表格区域范围时出现错误的问题
  • 修复在使用流式读取函数后,所产生的临时文件无法被清理的潜在问题
  • 修复部分情况下公式计算结果有误的问题
  • 修复并发读取单元格的值时出现的竞态问题
  • 修复根据样式索引获取样式定义时,部分样式定义缺失问题
  • 修复部分情况下读取带有科学记数法数字格式单元格的值结果有误的问题
  • 修复部分情况下,读取带有工作表中不含 r 属性的行元素导致的 panic 问题
  • 修复获取富文本单元格函数 GetCellRichText 在获取内联富文本时返回错误的问题
  • 修复部分情况下,由于共享字符串表索引计算有误导致的设置单元格的值结果有误问题
  • 修复函数 GetConditionalFormats 读取带有“高于平均值”条件格式规则时 panic 的问题
  • 修复了删除行之后合并单元格有误的问题
  • 修复了 SetConditionalFormat 函数在创建带有多规则条件格式时,规则优先级有误的问题
  • 修复了 GetConditionalFormats 函数无法读取带有渐变填充格式数据条的问题
  • 修复了获取样式函数 GetStyle 或获取条件格式样式函数 GetConditionalStyle 所返回的小数位数 DecimalPlaces 字段值有误问题
  • 修复了使用 CalcCellValue 函数时,开启 RawCellValue 选项失效的问题

性能优化

  • 提高了添加与删除数据透视表和图片的性能
  • 降低了修剪单元格时的内存占用

其他

  • Go Modules 依赖模块更新
  • 单元测试与文档更新
  • 包含简体中文、繁体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新,新增葡萄牙语版本文档

致谢

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

  • fnickels (Francis Nickels III)
  • m12r (Matthias Endler)
  • Abdelaziz-Ouhammou
  • Juneezee (Eng Zer Jun)
  • yicixin (壹次心)
  • TeeRenJing (rjtee)
  • phperic (magicrabbit)
  • kjushka (Anton Petrov)
  • krstak (Marko Krstic)
  • lpxxn (Nick)
  • ByteFlyCoding
  • yangliyl (Yang Li)
  • 15535382838
  • TajangSec (Tajang)
  • lujin1 (lujin)
  • parkoo (Tian)
  • ZhangXiao1024 (ZX)
  • zcgly
  • bramvbilsen (Bram Vanbilsen)
  • user65536
  • tianaiyouqing (天爱有情)
  • cuishuang (cui fliter)
  • CooolNv (Xuesong)
  • yuegu520
  • oneweek20169902 (li)
  • 3zmx
  • 327674413
  • melf-xyzh (MELF晓宇)
  • L4nn15ter
  • rememberher (Jerry)
  • ooooooobh (cherry)
  • xxxwang1983
  • funa12
  • coolbit
  • taitaking (zhukewen)
  • kewenof
  • ivekkairi (Vivek Kairi)
  • edwardfward (Ed)

欢迎加入 Excelize 技术交流群:

Excelize 开源基础发布 2.8.1 版本,2024 年首个更新的更多相关文章

  1. 重磅发布:阿里 OpenJDK终于开源啦! 将长期支持版本 Dragonwell

    前几天的北京阿里云峰会,阿里巴巴正式宣布对外开源 OpenJDK 长期支持版本 Alibaba Dragonwell.作为 Java 全球管理组织 Java Community Process (JC ...

  2. g4e基础篇#1 什么是版本控制系统

    g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...

  3. Nacos发布0.5.0版本,轻松玩转动态 DNS 服务

    阿里巴巴微服务开源项目Nacos于近期发布v0.5.0版本,该版本主要包括了DNS-basedService Discovery,对Java 11的支持,持续优化Nacos产品用户体验,更深度的与Sp ...

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

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

  5. 如何把开源项目发布到Jcenter

    转载自:https://www.jianshu.com/p/f66972f0607a 首先我们应该注册一个JFrog Bintray的账号 Jfrog Bintray官网 这里我们可以注意到那个绿色的 ...

  6. Flutter竟然发布了1.5版本!!!!

    2018年2月,Flutter推出了第一个Beta版本,在2018年12月5日,Flutter1.0版本发布,当时用了用觉得这个东西非常好用,对于当时被RN搞的头皮发麻的我来说简直是看到了曙光.而在昨 ...

  7. iNeuOS工业互联平台,聚合和变化率计算、设备IO和通讯状态、组态快捷键、创建文件夹、选择应用图标等,发布:v3.6版本

    目       录 1.      概述... 2 2.      平台演示... 2 3.      聚合和变化率计算... 2 4.      设备IO和通讯状态监测... 3 5.      组 ...

  8. Winjs – 微软开源技术发布的 JavaScript 组件集

    Winjs 是由微软开源技术的开发者推出的一组 JavaScript 组件,包括 ListView.ListView.Tooltip.DatePicker.Ratings 等等,帮助 Web 开发人员 ...

  9. 测试和发布说明(Alpha版本)

    Alpha版本测试报告 1.测试中发现的BUG 已修复  服务器无法发送邮件 重复上传同一首歌曲 下载进度无法实时跟进 可以多次点击上传 注册验证码失真 上传结束无法及时清理队列信息 不可重现的BUG ...

  10. Spring Boot 3.0.0 发布第一个里程碑版本M1,你的 Java 升到17 了吗?

    2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M1. 下面一起来来看看Spring Boot 3.0.0 M1版本都有哪些重大变化: Java基线从 ...

随机推荐

  1. [转帖]Python-Mock接口测试

    https://www.cnblogs.com/zhangwuxuan/p/12928850.html 前言 今天跟小伙伴们一起来学习一下如何编写Python脚本进行mock测试. 什么是mock? ...

  2. 【转帖】linux 调优篇 :硬件调优(BIOS配置)* 壹

    一. 设置内存刷新频率为Auto二. 开启NUMA三. 设置Stream Write Mode四. 开启CPU预取配置五. 开启SRIOV六. 开启SMMU 通过在BIOS中设置一些高级选项,可以有效 ...

  3. 简单的获取ESXi服务器上面开启了多少个vCPU的办法

    开启ssh 执行命令 esxcli vm process list |grep Config |cut -b 17- |xargs cat |grep numvcpus |cut -d " ...

  4. 真·Android Zxing 扫码中文乱码解决

    Zxing3.2.1 之前遇到过Android Zxing扫码乱码的问题,网上搜了下解决了下. 今天又遇到了问题. 依然会乱码. 研究总结如下: Zxing 可以在Hints中添加默认编码格式.这个编 ...

  5. 学习React中的jsx-保证你看的明明白白

    安装react的脚手架 1==>行 npx create-react-app myreactdemo01 解释一下: npx create-react-app 你的项目名称 npx create ...

  6. 【笔记】grafana v8.4.2 中如何设置曲线图的双坐标轴

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu 公众号:一本正经的瞎扯 这个话题当然很久就有人研究过了,只不过版本已经很老了,不适合新版本. 1 ...

  7. 【K哥爬虫普法】网盘用的好,“艳照门”跑不了

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识,知 ...

  8. Gorm 应用开发时区问题与unique唯一索引字段数据冲突问题

    目录 一.定义表模型时区问题 1.1 time.Time 与int64 1.2 优势 二.unique唯一索引字段数据冲突问题 一.定义表模型时区问题 1.1 time.Time 与int64 一般情 ...

  9. ETL之apache/hop-web 2.5安装和简单入门

    一.使用Docker 安装部署 1.拉取镜像 推荐使用下面的web版本 docker pull apache/hop:latest docker pull apache/hop-web:latest ...

  10. c++全局变量extern

    extern extern 是 C++ 中的一个关键字,用于声明一个变量或函数是在其他文件中定义的.它的作用是告诉编译器在链接时在其他文件中寻找该变量或函数的定义. 在 C++ 中,如果一个变量或函数 ...