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 依赖模块更新
- 单元测验与档案更新
- 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言档案网站更新
出处:https://www.cnblogs.com/xuri
本作品由 Ri Xu 创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可, 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接,如您有任何疑问或者授权方面的协商,请 给我留言,
0 评论