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
函数敞开工作簿和数据流 - 批改
ReadZipReader
为File
的实现, 反对通过选项指定解压至内存或文件系统 - 移除了不必要的导出变量
XMLHeader
,可应用encoding/xml
包的xml.Header
代替 - 移除了不再应用的导出变量
ErrToExcelTime
新增性能
- 新增 API:
SetRowStyle
反对设置整行款式, 相干 issue #990 - 新增 API:
GetCellType
反对获取单元格数据类型, 相干 issue #417 和 #520 - 新增 API:
SetAppProps
和GetAppProps
反对设置与获取工作簿应用程序属性, 相干 issue #1095 GetCellValue
,GetRows
,GetCols
,Rows
和Cols
反对指定是否读取单元格原始值而不利用数字格局表达式, 相干 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 依赖模块更新
- 单元测试与文档更新
- 蕴含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新