乐趣区

关于go:Excelize-开源基础库-270-发布-2023-年首个更新

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

2023 年 1 月 9 日,社区正式公布了 2.7.0 版本,该版本蕴含了多项新增性能、谬误修复和兼容性晋升优化。上面是无关该版本更新内容的摘要,残缺的更改列表可查看 changelog。

版本阐明

此版本中最显著的变动包含:

兼容性提醒

  • 降级至该版本须要您应用的 Go 语言为 1.16 或更高版本,以迁徙不再反对的规范库 ioutil
  • 当给定工作表名称中存在有效字符时将返回谬误,不再主动疏忽有效字符
  • GetCellStyle 函数不再返回合并单元格区域左上角单元格的款式
  • 重命名以下 5 个导出数据类型和谬误常量,具体更改详见官网文档中的更新阐明
  • 移除了 54 项导出类型,具体更改详见官网文档中的更新阐明
  • 移除了 2 个导出常量:OrientationPortraitOrientationLandscape
  • 批改了以下 21 个函数的签名,应用构造体援用代替此前以 JSON 格局示意的选项参数,具体更改详见官网文档中的更新阐明
  • 引入了 8 项新的函数代替现有函数,具体更改详见官网文档中的更新阐明
  • CellType 枚举值中增加 CellTypeFormula, CellTypeInlineString, CellTypeSharedString 并移除了 CellTypeString
  • 对增加批注 AddComment 函数的签名进行了更改,反对创立富文本批注,相干 issue #1204
  • 当 XML 反序列化异样时将返回谬误以代替输入日志,函数 GetComments, GetDefaultFontSetDefaultFont 减少了 error 类型的谬误返回值

新增性能

  • 新增 GetDataValidationsGetConditionalFormats 函数以反对获取数据验证设置和条件格局,相干 issue #827
  • 新增 ProtectWorkbookUnprotectWorkbook 以提供工作簿爱护设置反对
  • 新增 SetSheetCol 函数以反对按列设置单元格的值,相干 issue #1247
  • 新增 GetColStyle 函数以反对设置列款式,相干 issue #1293
  • 新增 SetSheetBackgroundFromBytes 函数以反对依据给定的图片数据设置工作表背景图片,相干 issue #1405
  • 新增导出变量 IndexedColorMapping 以反对内建索引色彩转换
  • 新增 20 项导出类型: AutoFilterListOptions, AutoFilterOptions, Chart, ChartAxis, ChartDimension, ChartLegend, ChartLine, ChartMarker, ChartPlotArea, ChartSeries, ChartTitle, ConditionalFormatOptions, PaneOptions, Panes, GraphicOptions, Shape, ShapeColor, ShapeLine, ShapeParagraphTableOptions
  • 新增 2 项公式函数: AGGREGATE 和 SUBTOTAL
  • SaveWriteWriteTo 函数反对指定保留选项,相干 issue #744
  • 应用 AddChart 函数增加图表时,反对为折线图设置是否应用平滑折线,相干 issue #1290
  • 应用 AddChart 函数增加图表时,反对设置自定义折线图线条色彩,相干 issue #1345
  • 应用 AddChart 函数增加图表时,反对设置自定义坐标轴字体款式,相干 issue #320
  • 增加图表函数 AddChart 反对创立三维折线图
  • 以下函数新增并发平安反对:SetColWidthGetColWidthSetColVisibleGetColVisibleSetColStyleGetColStyle
  • 设置款式时,当给定的款式 ID 不存在时将返回谬误,相干 issue #1323
  • 流式按行赋值时,若行号未递增将返回谬误,以防止生成的工作簿损坏,相干 issue #1139
  • 按行流式写入工作表时,反对通过指定 RowOpts 为单元格设置款式,相干 issue #1354
  • 反对流式设置窗格,相干 issue #1047
  • 反对流式设置行内富文本单元格
  • 反对流式插入分页符
  • 新增 7 项导出错误信息: ErrUnprotectWorkbookErrUnprotectWorkbookPasswordErrStreamSetPanesErrSheetNameBlankErrSheetNameInvalidErrSheetNameLengthErrSheetNameSingleQuote,以便开发者可依据不同的谬误类型进行采取相应解决
  • 新增 5 项导出数据类型: HeaderFooterOptionsPageLayoutMarginsOptionsPageLayoutOptionsSheetPropsOptionsViewOptions
  • 反对设置分级显示的明细数据方向
  • 反对读取和设置单元格字体的主题色彩和色调,相干 issue #1369
  • 反对读取带有合乎 ISO 8061 规范的工夫类型单元格的值
  • 反对设置和读取带有内建色彩索引的字体色彩
  • 工作簿敞开函数将清理由流式写入器生成的磁盘缓存文件
  • 反对增加或删除列时主动调整受影响的列款式
  • 通过 AddPicture 增加图片时,现已容许插入 SVG 格局图片

兼容性晋升

  • 流式写入单元格时将以行内字符类型存储字符型单元格的值,相干 issue #1377
  • 保留工作簿时将跳过工作表中的不带有款式和属性的空白行,以缩小生成文档的体积,相干 issue #1383

问题修复

  • 修复局部状况下读取带有内建数字格局款式的浮点数精度有误问题,解决 issue #1328,#1368 和 #1373
  • 修复局部状况下读取带有 AM/PM 数字格局款式的单元格有误问题,解决 issue #1338
  • 修复局部状况下删除批注时因为数组下标越界导致的 panic,解决 issue #1343
  • 修复局部状况下读取单元格的值时呈现 panic 的问题,解决 issue #1384 和 #1415
  • 修复局部状况下误将文本解析为浮点型数值的问题,解决 issue #1360
  • 修复应用空字符创立工作表后生成的工作簿损坏问题,解决 issue #1361
  • 修复向工作表增加图片后,获取该图片内容为空的问题
  • 修复局部状况下插入行列后生成的工作簿损坏问题
  • 删除单元格公式时将删除公式计算链中的共享单元格援用,以修复局部状况下生成的文档损坏问题
  • 修复局部状况下未对工作表名称特殊字符及长度做正确处理的问题,解决 issue #1328
  • 修复局部状况下公式函数 OR 计算结果有误的问题
  • 修复在带有繁多单元格区域援用的工作表中插入行列时,将收到异样的问题
  • 修复获取带有繁多单元格区域援用合并单元格区域时,收到异样的问题
  • 修复局部状况下读取富文本单元格的值不残缺问题
  • 修复流式写入时未本义 XML 字符导致的文档损坏问题,解决 issue #1391
  • 修复公式计算函数 ADDRESS 在工作表名称为空时计算结果有误的问题,解决 issue #1396
  • 修复局部状况下增加图片后果有误的问题,解决 issue #1404

性能优化

  • 进步流式合并单元格性能,相较于上一版本,耗时最高升高约 90%,内存应用最高缩小约 86%
  • 优化按行流式写入工作表 SetRow 函数的性能,相较于上一版本,耗时最高升高约 19%

其余

  • Go Modules 依赖模块更新
  • 单元测试与文档更新
  • 优化外部变量与函数命名
  • 蕴含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新

致谢

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

  • cdenicola (Cooper de Nicola)
  • chenliu1993
  • davidborry
  • patsak (Kostya Privezentsev)
  • dafengge0913
  • Beeb0p (Artem Tarasenko)
  • invzhi
  • zhangzitao (Zitao)
  • jtwatson (Joseph Watson)
  • carbin-gun (charles.deng)
  • harrison3000 (Harrison)
  • strivek (GaoFei)
  • gonghaibinx
  • martinmr (Martin Martinez Rivera)
  • zclark (Zach Clark)
  • March0715 (March)
  • renxiaotu
  • devloppper
  • jianxinhou
  • nesstord
  • Bayzet (Bayzet Tlyupov)
  • guoweikuang (郭伟匡)
  • qinyuguang (Gin)
  • liron-l (Liron Levin)
退出移动版