Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 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年1月3日,社区正式发布了 2.5.0 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,完整的更改列表可查看 changelog

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

兼容性提示

  • 打开已有工作簿或在获取行迭代器后,需要调用对应的 Close 函数关闭工作簿和数据流
  • 修改 ReadZipReaderFile 的实现, 支持通过选项指定解压至内存或文件系统
  • 移除了不必要的导出变量 XMLHeader,可使用 encoding/xml 包的 xml.Header 代替
  • 移除了不再使用的导出变量 ErrToExcelTime

新增功能

  • 新增 API: SetRowStyle 支持设置整行样式, 相关 issue #990
  • 新增 API: GetCellType 支持获取单元格数据类型, 相关 issue #417 和 #520
  • 新增 API: SetAppPropsGetAppProps 支持设置与获取工作簿应用程序属性, 相关 issue #1095
  • GetCellValue, GetRows, GetCols, RowsCols 支持指定是否读取单元格原始值而不应用数字格式表达式, 相关 issue #621
  • 新增 95 项公式函数: ACCRINT, ACCRINTM, ADDRESS, AMORDEGRC, AMORLINC, AVEDEV, AVERAGEIF, CHIDIST, CONFIDENCE, CONFIDENCE.NORM, COUNTIF, COUNTIFS, COUPDAYBS, COUPDAYS, COUPDAYSNC, COUPNCD, COUPNUM, COUPPCD, DATEVALUE, DAY, DAYS, DELTA, DEVSQ, DISC, DURATION, ERF, ERF.PRECISE, ERFC, ERFC.PRECISE, GEOMEAN, GESTEP, IFNA, IFS, INDEX, INTRATE, ISFORMULA, ISLOGICAL, ISREF, ISOWEEKNUM, MATCH, MAXA, MAXIFS, MDURATION, MINIFS, MINUTE, MONTH, ODDFPRICE, PERCENTILE.EXC, PERCENTRANK.EXC, PERCENTRANK.INC, PERCENTRANK, PRICE, PRICEDISC, PRICEMAT, PV, QUARTILE.EXC, RANK, RANK.EQ, RATE, RECEIVED, RRI, SHEETS, SLN, STANDARDIZE, STDEV.P, STDEVP, SWITCH, SYD, TBILLEQ, TBILLPRICE, TBILLYIELD, TEXTJOIN, TIME, TRANSPOSE, TRIMMEAN, VALUE, VAR, VAR.S, VARA, VARPA, VDB, WEEKDAY, WEIBULL, WEIBULL.DIST, XIRR, XLOOKUP, XNPV, XOR, YEAR, YEARFRAC, YIELD, YIELDDISC, YIELDMAT, Z.TEST, ZTEST, 相关 issue #65 和 #1002
  • 公式计算引擎支持嵌套 IF 函数, 相关 issue #987
  • 公式计算引擎支持共享公式, 相关 issue #844
  • 公式计算引擎支持文本比较运算, 相关 issue #998
  • 支持在数据验证中使用公式, 相关 issue #1012
  • 支持文档压缩比限制,避免潜在的安全风险
  • SetCellFormula 支持设置共享公式
  • UpdateLinkedValue 在清除单元格计算缓存时将跳过 macro sheet, 相关 issue #1014
  • 修复部分情况下,由于内部依赖关系计算错误导致的 AddPicture 重复创建图片的问题, 相关 issue #1017
  • AddShape 支持设置形状轮廓线条宽度, 相关 issue #262
  • 新增文档打开选项 UnzipXMLSizeLimit 以支持指定打开每个工作表以及共享字符表时的内存解压上限
  • 创建样式时,若给定的自定义数字格式无效,将返回错误提示,相关 issue #1028
  • 流式写入现已支持设置行样式
  • 流式写入器将为时间类型单元格创建时间数字格式样式,相关 issue #1107
  • 支持设置数据透视表报表布局“以压缩形式显示”或“以大纲形式显示”, 相关 issue #1029
  • 行/列迭代器支持获取当前行/列序号和行/列总数, 相关 issue #1054
  • 使用 time.Time 类型参数进行单元格赋值时,支持时区位置, 相关 issue #1069
  • 新增导出 7 项错误信息,以便开发者可根据不同的错误类型进行采取相应处理

兼容性提升

  • 提升与内部带有 r="0" 属性工作表的兼容性
  • 保留 XML 控制字符
  • 提升样式设置与 Apple Numbers 的兼容性, 相关 issue #1059
  • 页眉页脚字符数限制兼容多字节字符, 相关 issue #1061
  • 设置单元格时将保留水平制表符, 相关 issue #1108

问题修复

  • 修复部分情况下删除数据验证失败的问题, 解决 issue #979
  • 修复部分情况下设置数据验证下拉列表失败的问题, 解决 issue #986
  • 修复公式计算引擎 LOOKUP 函数部分情况下计算结果错误的问题, 解决 issue #994
  • 修复公式计算引擎 LOOKUP 仅支持完全匹配的问题, 解决 issue #997
  • 修复公式计算引擎百分比计算错误的问题, 解决 issue #993
  • 修复特定情况下单元格读取异常导致的 panic
  • 修复设置“后 N 项”条件格式失败的问题
  • 修复部分情况下时间解析错误的问题, 解决 issue #1026 和 #1030
  • 修复科学记数法数字格式的单元格值解析异常的问题,解决 issue #1027
  • 修复部分情况下浮点型数据读取异常的问题,解决 issue #1031
  • 修复部分情况下删除工作表失败的问题
  • 修复内建时间数字格式解析异常问题,解决 issue #1060
  • 修复部分情况下新建样式时返回样式 ID 异常的问题
  • 修复部分情况下删除行列后合并单元格区域异常的问题

性能优化

  • 合并单元格性能大幅提升,耗时降低 90%
  • 提高流式读取性能,当内部 XML 较大时,将共享字符串表解压缩到系统临时文件,内存使用量减少约 60%, 相关 issue #109
  • 优化读取工作表列表性能
  • 优化设置列样式存储,缩小生成的文档体积,解决 issue #1057

其他

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

Excelize 2.5.0 正式发布,这些新增功能值得关注的更多相关文章

  1. Win 10更新版1709有哪些新功能值得关注!

    windows 10秋季创意者更新版1709发布已经有段时间了,也有很多用户选择升级这次更新的系统.那么,这次Win 10 更新版1709有哪些新功能值得关注呢?下面,一起随主机吧来看一看吧! 1. ...

  2. .NET Framework3.0/3.5/4.0/4.5新增功能摘要

    Microsoft .NET Framework 3.0 .NET Framework 3.0 中增加了不少新功能,例如: Windows Workflow Foundation (WF) Windo ...

  3. hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档

    相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclip ...

  4. nopCommerce 3.3正式发布及新增功能改进

    nopCommerce是一套优秀开源且基于Asp.net MVC的开源商城系统,nopCommerce 3.x经历长时间多个版本重构优化改进,目前已经趋于完善与成熟! nopCommerce 3.3正 ...

  5. JDK15正式发布,新增功能预览!

    JDK 15 在 2020 年 9 月 15 号正式发布了,这次发布的主要功能有: JEP 339:EdDSA 数字签名算法 JEP 360:密封类(预览) JEP 371:隐藏类 JEP 372:删 ...

  6. 开源社交系统ThinkSNS+ V0.8.0 正式发布(一期功能版本)

    智士软件旗下开源sns社交系统ThinkSNS即将进入10周年,推出并行两代系统ThinkSNSV4和ThinkSNS+,以专业易用的技术源码输出,驱动互联网社交软件建设及创业,使用ThinkSNS改 ...

  7. C# 6.0 中的新增功能(.NET Framework 4.6 与 Visual Studio 2015 )

    C#6.0 在 2015 年7月随着.NET Framework 4.6 一同发布,后期发布了.NET Framework 4.6.1,4.6.2. 一.自动属性初始化(Auto-property i ...

  8. goldengate for big data 12.2.0.1.1新增功能

    新格式支持:包括Avro OCF和HDFS顺序文件,OGG现在支持将数据写入Avro对象容器(Object container format)和HDFS顺序文件 支持Hadoop平台元数据或DDL更新 ...

  9. C#2.0新增功能01 分布类与分部方法

    连载目录    [已更新最新开发文章,点击查看详细] 分部类型 拆分一个类.一个结构.一个接口或一个方法的定义到两个或更多的文件中, 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组 ...

随机推荐

  1. SpringCloud 服务治理

    目录 1. Eureka 1.1 Eureka 介绍 1.2 Eureka 快速入门 父工程 Eureka Server(子工程) pom.xml 启动类 application.yml Eureka ...

  2. 如何优化PlantUML流程图(时序图)

    这篇文章用来介绍,如何画出好看的流程图. 1. 选择合适的组件 1.1 plantuml官方提供的组件 1.2 加载图片 1.2.1 加载本地图片 1.2.2 加载网络图片 1.2.3 图片资源 2. ...

  3. 陈宏智:字节跳动自研万亿级图数据库ByteGraph及其应用与挑战

    导读: 作为一种基础的数据结构,图数据的应用场景无处不在,如社交.风控.搜广推.生物信息学中的蛋白质分析等.如何高效地对海量的图数据进行存储.查询.计算及分析,是当前业界热门的方向.本文将介绍字节跳动 ...

  4. SAP Using Text Modules in Adobe Forms

    In this demo we will create an adobe form which displays text in two different languages (English or ...

  5. MySql中数据表增加字段很慢怎么办

    正确的做法是这样,对于数据量很大的表,需要添加所有或者修改字段的做法是如下: 1.先创建一张一样的表 create table new_tb like tb_old; 2.修改创建表的字段 alter ...

  6. 一文读懂数仓中的pg_stat

    摘要:GaussDB(DWS)在SQL执行过程中,会记录表增删改查相关的运行时统计信息,并在事务提交或回滚后记录到共享的内存中.这些信息可以通过 "pg_stat_all_tables视图& ...

  7. labview从入门到出家2--将“加法程序”制作成“exe应用程序”

    1.上一章主要讲了如何跑我们的第一个加法程序(这里向第一个程序的鼻祖"hello world"致敬),这一章我们直接进入主题,将我们写的程序生成exe文件放桌面运行. 2.要生成e ...

  8. Math类和函数定义

    Math这个类是java系统内部当中的一个类,他用来提供一些基本的数学操作,他也有些工具可以给我们用比如 :abs--算绝对值   pow--算幂次   random--随机数   round--四舍 ...

  9. CTO与CIO选型数据中台的几大建议

    企业数字化转型离不开企业数字化技术的配备.但企业在选择数字化技术时也面临着一个问题,就是如何在大胆采用先进的数字化技术和对技术进行投资之间找到平衡,将投资风险降到最低,毕竟错误的技术选型会给企业带来不 ...

  10. Java学习_常见异常

    JAVA常见异常 Java.io.NullPointerException null 空的,不存在的 NullPointer 空指针 空指针异常,该异常出现在我们操作某个对象的属性或方法时,如果该对象 ...