当前位置: 首页 > news >正文

Excelize 开源基础库 2.9.0 版本正式发布

Excelize 开源基础库 2.8.1 版本发布, 2024 年首个更新

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Excel、WPS、OpenOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写支持,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。自 2016 年开源以来已成为云原生应用尤其是 Go 语言开发者在处理电子表格办公文档时的热门选择,正在被广泛应用于大型互联网公司、中小企业客户和初创公司。入选 2023 开源创新榜优秀开源项目、荣获 2022 年中国开源创新大赛一等奖、2020 Gopher China - Go 领域明星开源项目 (GSP)、2018 年开源中国码云最有价值开源项目 GVP (Gitee Most Valuable Project)。

开源代码

GitHub: github.com/xuri/excelize
中文文档: xuri.me/excelize/zh-hans

2024年10月15日,社区正式发布了 2.9.0 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,此版本中最显著的变化包括:

兼容性提示

  • 将数据类型 ConditionalFormatOptions 中的字段 Format 修改为指针类型,解决 issue #1867

新增功能

  • 新增函数 DeleteSlicerGetSlicers 支持删除和获取切片器,相关 issue #810
  • 新增函数 MoveSheet 支持移动工作表在工作簿中的位置,相关 issue #1076
  • 数据类型 GraphicOptions 中添加了新的字段 AutoFitIgnoreAspect 支持添加图片时以忽略比例的方式填充单元格
  • 数据类型 ChartAxis 中添加了新的字段 TickLabelPosition 以支持设置图表坐标轴标签的位置
  • 数据类型 PivotTableField 中添加了新的字段 ShowAllInsertBlankRowNumFmt
  • 数据类型 PivotTableOptions 中添加了新的字段 ClassicLayoutFieldPrintTitlesItemPrintTitles
  • 新增 2 项枚举类型 ChartTickLabelPositionTypePictureInsertType
  • 新增举类型值 ChartLineUnset
  • 新增 4 项新增扩展资源标识常量 ExtURIDataFieldExtURIPivotFieldExtURIPivotFilterExtURIPivotHierarchy
  • 新增导出错误变量 ErrPivotTableClassicLayout
  • 函数 MergeCell 合并单元格时将清除除合并区域左上角单元格之外其他单元格的值
  • 函数 AddDataValidationDeleteDataValidationGetCellStyle 支持并发安全调用,相关 issues #1825 和 #1903
  • 获取数据验证函數 GetDataValidations 支持获取存储于扩展列表中的数据验证规则,相关 issue #1835
  • 设置工作表名称函数 SetSheetName 支持大小写敏感,相关 issue #1856
  • 函数 GetPictureCellsGetPictures 支持获取通过 IMAGE 公式添加的图片和内部以绝对路径形式存储的图片
  • GraphicOptions 数据类型中新增了 AutoFitIgnoreAspect 选项,支持以忽略原始纵横比例的方式将图片尺寸填充单元格
  • 设置超链接函数 SetCellHyperLink 支持指定 linkType 为 None 以删除单元格超链接,相关 issue #1940
  • 添加图表函数 AddChart 支持创建带有多个相同图表类型的组合图表,相关 issue #1940
  • 添加图表函数 AddChart 支持设置散点图线型
  • 使用 AddPivotTable 函数创建数据透视表时,若数据源引用的单元格范围内首行单元格的值为空,将返回错误,相关 issue #1945
  • 读取单元格的值时,支持应用带有语言/地区标签和 ID 的数字格式表达式
  • 读取单元格的值时,支持为时间和时间间隔应用动态数字格式,相关 issue #2004
  • 新增公式函数:DOLLAR

兼容性提升

  • 提升了读取带有对齐格式的数字格式单元格的兼容性,解决 issue #1847
  • 提升了对内部带有命名空间前缀的工作表部件的兼容性,解决 issue #1886
  • 提升了对内部带有绝对路径多媒体部件的兼容性,解决 issue #1888

问题修复

  • 修复 v2.8.1 中引入的问题,自动过滤器在 LibreOffice 中失效的问题,解决 issue #1830
  • 修复 v2.8.1 中引入的问题,删除行列时支持调整带有多重单元格引用的数据验证,解决 issue #1831
  • 修复 v2.8.1 中引入的问题,修复了复制行时,如果工作表中带有多重单元格引用的条件格式或数据验证,将返回错误的问题
  • 修复 v2.8.1 中引入的问题,修复了多次保存时单元格的值设置有误的问题,解决 issue #1906
  • 修复 v2.8.1 中引入的问题,修复了迷你图预期外地出现在多张工作表中的问题,解决 issue #1910
  • 公式计算函数 CalcCellValue 支持计算带有矩阵参数的公式函数 ISNUMBER、OR 和 FIND,解决 issue #1819
  • 修复部分情况下公式计算函数 CalcCellValue 计算结果数值舍入精度有误的问题,解决 issue #1851
  • 修复计算函数 CalcCellValue 对带有 XIRR 和 XNPV 的公式计算结果有误问题,解决 issue #1989
  • 修复部分情况下 RemoveCol 函数返回错误的问题,解决 issue #1829
  • 修复部分公式计算函数 DATE 的计算结果数据类型有误的问题,解决 issue #1833
  • 修复读取内部工作表部件中缺少 r 属性的工作簿时,出现 panic 的问题
  • 修复部分情况下,插入行或列后,单元格公式中的括号出现丢失的问题,解决 issue #1861
  • 修复部分情况下,数据验证规则中的部分字符被不正确地转义问题
  • 修复流式写入单元格的值时,部分字符无法正确显示的问题,解决 issue #1865
  • 保存工作簿时将对内部部件排序,以获得一致的文件哈希值和正确的互联网媒体类型,解决 issue #1889
  • 修复添加图表函数 AddChart 在组合图表中设置坐标轴格式失效的问题,解决 issue #1921
  • 修复添加图表函数 AddChart 设置图表主坐标轴标题位置有误的问题
  • 修复添加图表函数 AddChart 设置垂直次坐标轴标题无法被正常显示的问题,解决 issue #1926
  • 修复添加图表函数 AddChart 设置折线图线型无效的问题
  • 修复部分情况下获取数据透视表函数 GetPivotTables 返回数据透视表的数据源范围有误的问题,解决 issue #1937
  • 修复获取样式函数 GetStyle 在读取不包含 sysClr 属性的工作簿时出现 panic 的问题,解决 issue #1963
  • 修复获取单元格富文本函数 GetCellRichText 在读取不包含共享字符串表索引单元格时返回错误的问题,解决 issue #1999
  • 修复使用 SetSheetVisible 函数读取不含视图属性的工作表时出现 panic 的问题,解决 issue #1969
  • 修复部分情况下读取带有数字格式单元格的值时,百分比符号丢失的问题,解决 issue #1942
  • 修复带有负数值的散点图水平坐标轴不现实的问题
  • 修复因删除行列而调整图片、图表、形状等绘图对象位置后,与形状相关联的宏丢失的问题,解决 issue #1957
  • 修复部分情况下删除列后,条件格式丢失的问题,解决 issue #1968
  • 修复部分情况下读取数值单元格的值精度有误的问题,解决 issue #1979
  • 支持设置单元格的值为 IEEE 754 “非数字”值或无穷大,解决 issue #119 和 #1955

性能优化

  • 修复 v2.8.0 中引入的性能下降和内存占用增加问题
  • 降低了按行获取全部单元格的值函数 GetRows 的内存占用,相关 issue #1874
  • 优化了索引转列名函数 ColumnNumberToName 的性能,最多降低内存占用 50%,耗时最多减少 50%

其他

  • Go Modules 依赖模块更新
  • 单元测试与文档更新
  • 包含阿拉伯语、德语、英语、西班牙语、法语、日语、韩语、葡萄牙语、俄语、简体中文和繁体中文的多国语言文档网站更新,新增意大利语文档

致谢

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

  • mirgong (helloWorld)
  • YueChenXu-Kimi (岳晨旭)
  • JackMin1314 (陈王)
  • paolobarbolini (Paolo Barbolini)
  • iEvan-lhr (Evan lu)
  • yetyear (yeahyear)
  • ha5ky (hu5ky)
  • lizhichao (vic)
  • realzuojianxiang (realzuojianxiang)
  • msackman (Matthew Sackman)
  • yyle88 (yangyile-yyle88)
  • yunkeweb (yunkeweb)
  • iraj720 (Nima)
  • jianxinhou
  • barlevd
  • 18409615759 (nna)
  • qijinkui (xiaokui)
  • user1121114685 (联盟少侠)
  • wangsongyan
  • vsemichev (Vovka Morkovka)
  • zhayt (Aybek)
  • ShowerBandV (ShowerBandV)
  • imink (Patrick Wang)
  • samkeke (wxy)
  • pjh591029530
  • zhangyimingdatiancai
  • wanghaochen2024
  • centurion-hub
  • peng (Zhang Zhipeng)
  • slashdotdash (Ben Smith)
  • ArcholSevier
  • liuwangchao
  • Zncl2222 (Jian Yu, Chen)

相关文章:

Excelize 开源基础库 2.9.0 版本正式发布

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Excel、WPS、OpenOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&#xf…...

人脸识别-特征算法

文章目录 一、LBPH算法1.基本原理2.实现步骤3.代码实现 二、Eigenfaces算法1.特点2.代码实习 三、FisherFaces算法1.算法原理2.算法特点3.代码实现 四、总结 人脸识别特征识别器是数字信息发展中的一种生物特征识别技术,其核心在于通过特定的算法和技术手段&#xf…...

C++【内存管理】(超详细讲解C++内存管理以及new与delete的使用和原理)

文章目录 1.C/C内存分布2.C语言中动态内存管理方式3.C内存管理方式3.1 new/delete操作内置类型3. 2new/delete操作自定义类型 4. operator new与operator delete函数(重点)5. new和delete的实现原理5.1 内置类型5.2 自定义类型5.2.1 自定义类型调用new[]…...

elementUi el-table 表头高度异常问题

1、现象 在同一个页面通过状态切换不同table时&#xff0c;当从有合并标头行的table切换到无合并表头的table时&#xff0c;无合并表头的table的表头的高度异常了&#xff0c;如下图 切换后 2、解决 给每个el-table 加上一个唯一的key <el-table key"1"></…...

kubekey的应用

随着 Kubernetes 社区的不断发展&#xff0c;即将迎来 Kubernetes 1.30 版本的迭代。在早先的 1.24 版本中&#xff0c;社区作出一个重要决策&#xff1a;不再默认集成 Docker 作为容器运行时&#xff0c;即取消了对 Docker 的默认支持。这就像咱们家厨房换了个新灶头&#xff…...

如何识别并分类转录因子的家族

愿武艺晴小朋友一定得每天都开心 当我们有了差异表达的转录因子列表以后,接下来可能就想知道这些转录因子的家族分布情况是怎样的?有没有1-2个Family在其中起主要作用,占比较多。 基于这种需求,可以按以下几步来实现: 1)从AnimalTFDB4转录因子数据库中,根据需要…...

【C++11】可变模板参数详解

个人主页&#xff1a;chian-ocean 文章专栏 C 可变模板参数详解 1. 引言 C模板是现代C编程中一个非常强大且灵活的工具。在C11标准中&#xff0c;引入了可变模板参数&#xff08;variadic templates&#xff09;&#xff0c;它为模板编程带来了革命性改变。它的出现允许我们…...

本地群晖NAS安装phpMyAdmin管理MySQ数据库实战指南

文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 本文主要介绍如何在群晖NAS安装MySQL与数据库管理软件p…...

QTableWidget 接口详情

Qt Widgets->C Classes->QTableWidget Qt 5.12版本QTableWidget接口详情&#xff08;机翻&#xff09; QTableWidget类提供了一个带有默认模型的基于项的表视图。 属性 列数columnCount : int 行数rowCount : int 细节描述 QTableWidget类提供了一个带有默认模型的基…...

GESP CCF python四级编程等级考试认证真题 2024年9月

一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 据有关资料&#xff0c;山东大学于1972年研制成功DJL-1计算机&#xff0c;并于1973年投入运行&#xff0c;其综合性能居当时全国第三位。DJL-1计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成…...

oracle数据库名实例名服务名

Oracle数据库是一个复杂的系统&#xff0c;它包含多个组件&#xff0c;包括数据库服务器、实例和服务。 数据库名&#xff08;DB_NAME&#xff09;&#xff1a;这是数据库的内部名称&#xff0c;通常在创建数据库时指定&#xff0c;并在整个数据库生命周期内保持不变。 实例名…...

python+appium+雷电模拟器安卓自动化及踩坑

一、环境安装 环境&#xff1a;window11 1.1 安装Android SDK AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 这里面任选一个就可以&#xff0c;最终下载完主要要安装操作安卓的工具adb&#xff0c;安装这个步骤的前提是要…...

Python第七八次作业

1.输入一个大于0的正整数n&#xff0c;如果n 1 ,则返回1&#xff0c; 如果n是偶数&#xff0c;则返回 n // 2 &#xff0c;如果n是奇数&#xff0c;则返回 3n 1&#xff0c;将所有的返回值存放到一个列表中&#xff0c;注意&#xff1a;n是第一个元素&#xff0c;其他的元素根…...

Leetcode——数组:螺旋矩阵59.螺旋矩阵

题目 思路 对于每层&#xff0c;从左上方开始以顺时针的顺序填入所有元素。假设当前层的左上角位于 (top,left)&#xff0c;右下角位于 (bottom,right)&#xff0c;按照如下顺序填入当前层的元素。 从左到右填入上侧元素&#xff0c;依次为 (top,left) 到 (top,right)。 从上到…...

C++类与对象-继承和多态(超全整理)

前言 前面讲类与对象上中下时&#xff0c;所讲的都是在单个类中相关的语法&#xff08;初始化列表、this指针、静态成员、常函数和常对象......&#xff09;或者使两个不同的类产生联系的语法&#xff08;友元&#xff09;。而本文虽然也是类与对象的内容&#xff0c;但和之前的…...

3.3 Thymeleaf语法

文章目录 引言Thymeleaf标签显示标签链接地址标签条件判断标签元素遍历标签 Thymeleaf表达式变量表达式选择变量表达式消息表达式链接表达式 Thymeleaf内置对象上下文对象上下文变量上下文区域请求对象响应对象会话对象日期对象 实战演练创建控制器创建模板页面 结语 引言 Thy…...

使用Dlib库实现人脸检测和关键点定位

目录 前言 一、安装Dlib库 二、人脸检测 三、人脸关键点定位 前言 Dlib是一个现代化的 C 工具包&#xff0c;提供了一些机器学习算法和工具&#xff0c;特别是在面部识别和人脸关键点检测方面非常流行。它具有易于使用的 Python 接口&#xff0c;并被广泛应用于计算机视觉项…...

DNS隧道流量分析

DNS隧道 DNS协议又称域名系统是互联网的基础设施&#xff0c;只要上网就会用到&#xff0c;因而DNS协议是提供网络服务的重要协议&#xff0c;在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析&#xff0c;识别DNS隧道流量…...

HCIP-HarmonyOS Application Developer 习题(十一)

&#xff08;填空&#xff09;1、某开发者在使用HarmonyOs的分布式力时&#xff0c;分布式_____能力是其他分布式能力的基础。 答案&#xff1a;软总线 分析&#xff1a;分布式软总线是手机、平板、智能穿戴、智慧屏、车机等分布式设备的通信基座&#xff0c;为设备之间的互联互…...

使用Ollama测试OpenAI的Swarm多智能体编排框架

Ollama https://ollama.com/ ollama run qwen2.5Install Requires Python 3.10 pip install githttps://github.com/openai/swarm.git代码V1 # 导入Swarm和Agent类 from swarm import Swarm, Agent from openai import OpenAI # 实例化Swarm客户端 openai_client OpenAI…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...