Excelize 发布 2.6.1 版本,支持工作簿加密

Excelize 发布 2.6.1 版本,支持工作簿加密

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

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

兼容性提示

  • 重命名导出类型 TabColorTabColorRGB
  • 重命名导出常量 TotalColumnsMaxColumns
  • 重命名导出变量 ErrMaxFileNameLengthErrMaxFilePathLength
  • 重命名导出变量 ErrWorkbookExtErrWorkbookFileFormat
  • 移除了导出变量 ErrEncrypt
  • 工作表名称不再区分大小写

新增功能

  • 新增 34 项公式函数: CONVERT, COVARIANCE.S, DAVERAGE, DAYS360, DCOUNT, DCOUNTA, DGET, DMAX, DMIN, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DVAR, DVARP, EDATE, EOMONTH, EUROCONVERT, GROWTH, HYPERLINK, MINVERSE, MMULT, NETWORKDAYS, NETWORKDAYS.INTL, PEARSON, RSQ, SKEW.P, SLOPE, STDEVPA, STEYX, TREND, WEEKNUM, WORKDAY, WORKDAY.INTL
  • 新增 DeleteComment 函数支持删除单元格批注,相关 issue #849
  • 通过 AddShape 函数添加形状时支持指定宏
  • 新增对 1900 和 1904 日期系统的支持,相关 issue #1212
  • 新增更新超链接支持,相关 issue #1217
  • 通过 AddPicture 添加图片时,现已允许插入 EMF、WMF、EMZ 和 WMZ 格式图片,相关 issue #1225
  • 优化打开工作簿失败时的错误提示信息,新增导出变量 ErrWorkbookPassword 定义了打开工作簿时密码验证失败的错误提示信息,以便开发者可根据不同的错误类型进行采取相应处理
  • 新增导出常量 MinFontSizeMinColumnsMaxCellStyles 以定义最小字号、最小列号和单元格样式数量上限
  • 公式引擎新增数组公式支持
  • 支持根据给定的密码对工作簿进行加密保护,相关 issue #199
  • 设置单元格富文本格式时,支持通过指定 RichTextRun 中的 vertAlign 属性设置上标和下标
  • 通过 DeleteDataValidation 函数删除数据验证时,支持省略第二个引用区域参数以删除工作表中的全部数据验证,相关 issue #1254
  • 公式计算引擎支持带有百分比符号的条件比较表达式
  • 公式计算引擎支持依赖依赖公式计算,相关 issue #1262
  • 新增文档打开选项 MaxCalcIterations 以支持指定公式迭代计算的最多迭代次数
  • 新增导出类型 ColorMappingType 以定义颜色转换枚举类型
  • 插入或删除行列时支持自动调整表格区域
  • 支持设置与获取工作表标签颜色索引、主题和色调,相关 issue #1283
  • 行迭代器新增函数 GetRowOpts 支持读取行属性,相关 issue #1296

兼容性提升

  • 提升与内部包含无效样式计数工作簿的兼容,解决 issue #1211
  • 提升与 Google Sheet 的兼容性,解决 issue #1244 和 #1314
  • 流式写入器将不再为值为 nil 的单元格写入工作表,解决 issue #1299

问题修复

  • 修复当数据透视表中值区间与行/列区间包含相同字段时,生成的工作簿损坏问题,解决 issue #1203
  • 修复因缺少单元格类型检查导致的获取单元格富文本内容异常问题,解决 issue #1213
  • 修复读取单元格值时,因单元格类型推断错误导致的读取结果异常问题,解决 issue #1219
  • 修复读取带有 0 占位符数字格式表达式样式的单元格时,值为空的问题,解决 #1312 和 #1313
  • 修复部分情况下设置单元格值时,单元格继承行列样式有误的问题,解决 issue #1163
  • 修复在不包含视图属性设置的工作表中设置窗格时将出现 panic 的问题
  • 修复部分情况下公式引擎多参数公式计算结果有误的问题
  • 修复因内部页眉页脚属性定义顺序有误导致的生成工作簿损坏问题,解决 issue #1257
  • 修复部分情况下单元格赋值失效的问题,解决 issue #1264
  • 修复设置工作表视图属性时可能出现的 panic
  • 修复部分情况下因工作表核心属性中 dcterms 属性为空,导致生成的工作簿损坏问题
  • 修复新建工作表后工作簿属性丢失问题,解决 issue #1298

性能优化

  • 提高按行赋值和合并单元格的性能,恢复因修复 issue #1129 时导致的性能下降
  • 优化了公式计算引擎的性能
  • 降低 AddComment 添加批注时的内存开销并减少耗时,解决 issue #1310

其他

  • Go Modules 依赖模块更新
  • 单元测试与文档更新,修复单元测试在 go1.19 下的兼容性问题
  • 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新

致谢

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

  • @JDavidVR (David)
  • @sceneq
  • @Juneezee (Eng Zer Jun)
  • @MichealJl (jialei)
  • @ww1516123
  • @z-hua (z.hua)
  • @xdlrt (yeshu)
  • @eaglexiang (Eagle Xiang)
  • @MJacred
  • @ReganYue (Regan Yue)
  • @thomascharbonnel (Thomas Charbonnel)
  • @ee0703 (EE)
  • @NaturalGao (NaturalGao)
  • @Sangua633

欢迎加入 Slack 频道、Telegram 群组 或技术交流群 DingTalk Group ID: 30047129 QQ Group ID: 207895940

Excelize 发布 2.6.1 版本,支持工作簿加密

Original: https://www.cnblogs.com/xuri/p/excelize_v2_6_1.html
Author: xurime
Title: Excelize 发布 2.6.1 版本,支持工作簿加密

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516211/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • TCP粘”包”问题浅析及解决方案Golang代码实现

    一、粘”包”问题简介 在socket网络编程中,都是端到端通信, 客户端端口+客户端IP+服务端端口+服务端IP+传输协议就组成一个可以唯一可以明确的标识一…

    Go语言 2023年5月25日
    057
  • golang多版本管理工具

    前言 以往我安装 go环境都是去网站上下载对应文件,然后本地解压。每次发布新版本都这样做太麻烦了,所以我在寻找多版本管理工具。 [En] It’s too troubl…

    Go语言 2023年5月25日
    064
  • Golang项目的配置管理——Viper简易入门配置

    Golang项目的配置管理——Viper简易入门配置 What is Viper? From:https://github.com/spf13/viperViper is a co…

    Go语言 2023年5月25日
    052
  • Go 中的 byte、rune 与 string

    byte 和 rune byte 是 uint8 的别名,其字面量是 8 位整数值,byte 切片相比于不可变的 string 方便常用许多。它可以更改每个字节或字符。这对于处理文…

    Go语言 2023年5月25日
    0116
  • 举个栗子之gorpc – 消息的编码和解码

    2022年的第一个rpc,比以往来的更早一些… 留杭过年…写点东西 初始化项目gorpc 借助go module我们可以轻易创建一个新的项目 mkdir g…

    Go语言 2023年5月25日
    063
  • Go语言之Goroutine与信道、异常处理

    一、Goroutine Go 协程可以看做成一个轻量级的线程,Go 协程相比于线程的优势: Goroutine 的成本更低大小只有 2 kb 左右,线程有几个兆。 Goroutin…

    Go语言 2023年5月25日
    057
  • Go 的 golang.org/x/ 系列包和标准库包有什么区别?

    在开发过程中可能会遇到这样的情况,有一些包是引入自不同地方的,比如: golang.org/x/net/html 和 net/html, golang.org/x/crypto 和…

    Go语言 2023年5月25日
    065
  • 【Docker】使用Docker Client和Docker Go SDK为容器分配GPU资源

    深度学习的环境配置通常是一项比较麻烦的工作,尤其是在多个用户共享的服务器上。虽然conda集成了virtualenv这样的工具用来隔离不同的依赖环境,但这种解决方案仍然没办法统一地…

    Go语言 2023年5月25日
    071
  • gRPC,爆赞

    gRPC 这项技术真是太棒了,接口约束严格,性能还高,在 k8s 和很多微服务框架中都有应用。 作为一名程序员,学就对了。 之前用 Python 写过一些 gRPC 服务,现在准备…

    Go语言 2023年5月25日
    060
  • Go语言 异常panic和恢复recover用法

    背景:Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会…

    Go语言 2023年5月29日
    052
  • go微服务框架Kratos笔记(四)使用nacos作为远端配置中心

    初识nacos nacos是阿里开源的一款用于动态服务发现、配置管理和服务管理的平台。 官方介绍,Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特…

    Go语言 2023年5月25日
    077
  • HTTP 尝试获取 Client IP

    HTTP 中获取 Client IP 相关策略需求, 在当下网络环境中多数只能提供建议作用. 更多的是 通过其它唯一标识来挖掘更多潜在价值. 本文主要就一个内容, 如何最大可能尝试…

    Go语言 2023年5月25日
    058
  • Go基础知识梳理(四)

    Go基础知识梳理(四) GO的哲学是”不要通过共享内存来通信,而是通过通信来共享内存”,通道是GO通过通信来共享内存的载体。 rumtime包常用方法 ru…

    Go语言 2023年5月25日
    042
  • 听说,99% 的 Go 程序员都被 defer 坑过

    先声明:我被坑过。 出问题就对了,这个小东西坏的很,一不留神就出错。 所以,面对这种情况,我们今天就不讲道理了。直接把我珍藏多年的代码一把梭,凭借多年踩坑经历和写 BUG 经验,我…

    Go语言 2023年5月25日
    069
  • 使用go语言遇到的一些问题记录

    一、参数校验问题 使用go做web服务时,经常需要对请求参数进行校验,有些必填参数需要校验是否为空。 经常会遇到参数a为int类型,但是其值取值范围为0-xxx。0也是有意义的。 …

    Go语言 2023年5月29日
    062
  • go-micro集成链路跟踪的方法和中间件原理

    前几天有个同学想了解下如何在go-micro中做链路跟踪,这几天正好看到wrapper这块,wrapper这个东西在某些框架中也称为中间件,里边有个opentracing的插件,正…

    Go语言 2023年5月25日
    059
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球