Excelize 2.7.0 发布, 2023 年首个更新

xuri · · 764 次点击 · 开始浏览    置顶

<p align="center"><img src="https://static.golangjob.cn/230109/c635cfcc85a5081facef298d9b63e8c8.png" width="440" alt="github.com/xuri/excelize"/></p> Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel&trade; 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](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) 2023年1月9日,社区正式发布了 2.7.0 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,完整的更改列表可查看 [changelog](https://github.com/xuri/excelize/compare/v2.6.1...v2.7.0)。 ## 版本说明 此版本中最显著的变化包括: ### 兼容性提示 * 升级至该版本需要您使用的 Go 语言为 1.16 或更高版本,以迁移不再支持的标准库 `ioutil` * 当给定工作表名称中存在无效字符时将返回错误,不再自动忽略无效字符 * `GetCellStyle` 函数不再返回合并单元格区域左上角单元格的样式 * 重命名以下 5 个导出数据类型和错误常量,具体更改详见官方文档中的更新说明 * 移除了 54 项导出类型,具体更改详见官方文档中的更新说明 * 移除了 2 个导出常量:`OrientationPortrait` 和 `OrientationLandscape` * 修改了以下 21 个函数的签名,使用结构体引用代替此前以 JSON 格式表示的选项参数,具体更改详见官方文档中的更新说明 * 引入了 8 项新的函数代替现有函数,具体更改详见官方文档中的更新说明 * 在 `CellType` 枚举值中添加 `CellTypeFormula`, `CellTypeInlineString`, `CellTypeSharedString` 并移除了 `CellTypeString` * 对添加批注 `AddComment` 函数的签名进行了更改,支持创建富文本批注,相关 issue #1204 * 当 XML 反序列化异常时将返回错误以代替输出日志,函数 `GetComments`, `GetDefaultFont` 和 `SetDefaultFont` 增加了 error 类型的错误返回值 ### 新增功能 * 新增 `GetDataValidations` 和 `GetConditionalFormats` 函数以支持获取数据验证设置和条件格式,相关 issue #827 * 新增 `ProtectWorkbook` 和 `UnprotectWorkbook` 以提供工作簿保护设置支持 * 新增 `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`, `ShapeParagraph` 和 `TableOptions` * 新增 2 项公式函数: AGGREGATE 和 SUBTOTAL * `Save`、`Write` 和 `WriteTo` 函数支持指定保存选项,相关 issue #744 * 使用 `AddChart` 函数添加图表时,支持为折线图设置是否使用平滑折线,相关 issue #1290 * 使用 `AddChart` 函数添加图表时,支持设置自定义折线图线条颜色,相关 issue #1345 * 使用 `AddChart` 函数添加图表时,支持设置自定义坐标轴字体样式,相关 issue #320 * 添加图表函数 `AddChart` 支持创建三维折线图 * 以下函数新增并发安全支持:`SetColWidth`、`GetColWidth`、`SetColVisible`、`GetColVisible`、`SetColStyle` 和 `GetColStyle` * 设置样式时,当给定的样式 ID 不存在时将返回错误,相关 issue #1323 * 流式按行赋值时,若行号未递增将返回错误,以避免生成的工作簿损坏,相关 issue #1139 * 按行流式写入工作表时,支持通过指定 `RowOpts` 为单元格设置样式,相关 issue #1354 * 支持流式设置窗格,相关 issue #1047 * 支持流式设置行内富文本单元格 * 支持流式插入分页符 * 新增 7 项导出错误信息: `ErrUnprotectWorkbook`、`ErrUnprotectWorkbookPassword`、`ErrStreamSetPanes`、`ErrSheetNameBlank`、`ErrSheetNameInvalid`、`ErrSheetNameLength` 和 `ErrSheetNameSingleQuote`,以便开发者可根据不同的错误类型进行采取相应处理 * 新增 5 项导出数据类型: `HeaderFooterOptions`、`PageLayoutMarginsOptions`、`PageLayoutOptions`、`SheetPropsOptions` 和 `ViewOptions` * 支持设置分级显示的明细数据方向 * 支持读取和设置单元格字体的主题颜色和色调,相关 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 依赖模块更新 * 单元测试与文档更新 * 优化内部变量与函数命名 * 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的[多国语言文档网站](https://xuri.me/excelize)更新 ### 致谢 感谢 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) 欢迎加入 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="440" alt="Excelize 技术交流群"/></p>

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

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

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