Excelize 发布 2.5.0 版本,2022 年首个更新

xuri · · 1288 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

<p align="center"><img src="https://static.studygolang.com/220103/405236ebf99eb9d1e838a4a1fe8db724.png" width="440" alt="github.com/xuri/excelize"/></p> [Excelize](https://github.com/xuri/excelize) 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel&trade; 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选 2020 Gopher China - Go 领域明星开源项目(GSP)、2018 年开源中国码云最有价值开源项目 [GVP](https://gitee.com/xurime/excelize) (Gitee Most Valuable Project),目前已成为 Go 语言最受欢迎的 Excel 文档基础库。 ## 开源代码 **GitHub:** [github.com/xuri/excelize](https://github.com/xuri/excelize) **Gitee:** [gitee.com/xurime/excelize](https://gitee.com/xurime/excelize) **中文文档:** [xuri.me/excelize/zh-hans](https://xuri.me/excelize/zh-hans/) 2022年1月3日,社区正式发布了 2.5.0 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,完整的更改列表可查看 [changelog](https://github.com/xuri/excelize/compare/v2.4.1...v2.5.0)。 此版本中最显著的变化包括: ### 兼容性提示 * 打开已有工作簿或在获取行迭代器后,需要调用对应的 `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 #1096 * 优化读取工作表列表性能 * 优化设置列样式存储,缩小生成的文档体积,解决 issue #1057 ### 其他 * Go Modules 依赖模块更新 * 单元测试与文档更新 * 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的[多国语言文档网站](https://xuri.me/excelize)更新 * 欢迎加入 Slack 频道、Telegram 群组 或技术交流群 DingTalk Group ID: `30047129` QQ Group ID: `207895940` <p align="center"><img src="https://xuri.me/excelize/zh-hans/images/group@2x.png" width="500" alt="Excelize 技术交流群"/></p>

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1288 次点击  ∙  1 赞  
加入收藏 微博
7 回复  |  直到 2022-01-05 20:23:18
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传