Excelize 是 Go 语言编写的用于操作电子表格办公文档的开源根底库,基于 ISO/IEC 29500、ECMA-376 国际标准。能够应用它来读取、写入由 Microsoft Excel、WPS、Apache OpenOffice、LibreOffice 等办公软件创立的电子表格文档。反对 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格局,高度兼容带有款式、图片 (表)、透视表、切片器等简单组件的文档,并提供流式读写反对,用于解决蕴含大规模数据的工作簿。可利用于各类报表平台、云计算、边缘计算等零碎。
开源代码
GitHub: github.com/xuri/excelize
文档网站: xuri.me/excelize
2024 年 2 月 26 日,社区正式公布了 2.8.1 版本,该版本蕴含了多项新增性能、谬误修复和兼容性晋升优化。上面是无关该版本更新内容的摘要,此版本中最显著的变动包含:
兼容性提醒
- 降级至该版本须要您应用的 Go 语言为 1.18 或更高版本,以降级依赖库
golang.org/x/net
- 将数据类型
HeaderFooterOptions
中的字段AlignWithMargins
和ScaleWithDoc
批改为指针类型 - 移除了未应用的导出类型
ShapeColor
新增性能
- 新增函数
SetCellUint
反对设置无符号整型数 - 新增函数
GetPictureCells
反对获取图片单元格坐标 - 新增函数
GetConditionalStyle
反对获取条件格局款式定义 - 新增函数
GetHeaderFooter
反对获取工作表页眉页脚控制字符设置 - 新增函数
AddSlicer
反对为表格和数据透视表增加切片器 - 新增函数
GetPivotTables
反对获取数据透视表 - 新增函数
DeletePivotTable
反对删除数据透视表 - 数据类型
PivotTableOptions
中增加了新的字段Name
以反对创立数据透视表时指定自定义数据透视表名称 - 新增 7 项公式函数:DBCS、SEARCH、SEARCHB、TEXT、TEXTAFTER、TEXTBEFORE 和 xlfn.ANCHORARRAY
- 新增
ChartLineType
枚举类型,以反对设置图表区域边框线型 - 数据类型
Chart
中增加了新的字段Border
以反对设置图表区域边框类型 - 数据类型
ChartLine
中增加了新的字段Type
以反对设置图表线型 - 新增文档对象关系部件名称与命名空间变量
NameSpaceSpreadSheetXR10
、ContentTypeSlicer
、ContentTypeSlicerCache
和SourceRelationshipSlicer
- 新增扩大资源标识常量
ExtURIPivotCacheDefinition
- 容许在自定义名称、表格名称和数据透视表名称中应用点字符
- 删除工作表中的表格时,将保留表格区域全副单元格的值
- 反对读取带有分数数字格局的单元格
- 删除图片时,如果图片仅有一处援用,将同时从工作簿外部删除对应的图片文件,以缩小生成工作簿的体积并打消由此产生的潜在平安危险
- 反对为批注框设置自定义宽度和高度
- 插入或删除行列时,反对更新条件格局、数据验证、自定义名称、图形对象、单元格公式、易失性函数中的单元格坐标援用
- 新增 6 项新增条件格局类型:“特定文本”、“空值”、“无空值”、“谬误”、“无谬误”和“产生日期”
- 公式计算引擎反对计算带有多重负号的单元格公式
- 复制行时反对复制条件格局与数据验证
- 设置行高度函数
SetRowHeight
反对通过指定行高度为-1
移除自定义行高度设置 - 当给定的行高度有效时,函数
SetRowHeight
将返回谬误提示信息 - 增加图表函数
AddChart
反对设置图表中的数据标签地位 - 增加图表函数
AddChart
反对设置图表区域、绘图区域和数据标记的填充色和通明填充,在Chart
、ChartPlotArea
和ChartMarker
数据类型中增加了Fill
选项 - 增加图表函数
AddChart
反对设置图表坐标轴文字字体、字号和删除线格局 - 数据类型
ChartSeries
中新增了DataLabelPosition
字段,用于指定图表中各数据系列数据标签的地位 - 数据类型
Chart
中新增了BubbleSize
字段,用于设置气泡图和三维气泡图的气泡大小 - 新增导出数据类型
ChartDataLabelPositionType
- 获取图片单元格函数
GetPictureCells
和获取图片函数GetPictures
反对读取由 Kingsoft WPS™ Office 创立的嵌入单元格图片 - 设置条件格局函数
SetConditionalFormat
反对批量为多个单元格区域设置条件格局 - 重命名工作表时反对更新自定义名称
- 新增
GetBaseColor
函数,反对读取首选十六进制颜色代码 - 公式计算引擎反对读取日期类型单元格的值
- 单元格值读取函数反对继承应用
OpenReader
函数打开文档时所指定的Options
选项设置
兼容性晋升
- 晋升了对外部带有绝对路径绘图部件工作簿的兼容性
- 晋升了对外部带有浮点型
tabRatio
属性值工作簿部件的兼容性 - 晋升了读取带有空的自定义数字格局单元格的兼容性
- 晋升了与不反对默认主题部件命名空间电子表格预览程序的兼容性
- 晋升了单元格批注形态与 KingSoft WPS™ Office 的兼容性
- 保留工作簿时对外部部件进行排序,以确保在不扭转工作簿内容时生成的文件具备统一的哈希值
问题修复
- 增加对公式函数 MID 和 MIDB 中 num_chars 参数的查看,以防止出现正数导致的 panic
- 修复局部状况下,公式函数 LEN、LOWER、PROPER、REPT、UPPER 和 IF 的计算结果为空的问题
- 修复局部状况下,计算公式函数 CHITEST 和 MMULT 时呈现 panic 的问题
- 修复 v2.8.0 中引入的问题,通过创立非凡自定义名称的形式设置打印区域和打印题目时不再返回谬误
- 修复 v2.8.0 中引入的问题,修复了因为外部款式部件中索引色彩和 MRU 色彩缺省值解决有误导致的生成工作簿损坏问题
- 修复 v2.8.0 中引入的问题,修复了特定状况下读取带有数字格局的单元格后果为空的问题
- 修复 v2.7.1 中引入的问题,修复了气泡图和三维气泡图中不显示气泡的问题
- 修复因外部工作表 ID 解决有误导致的特定状况下通过
AutoFilter
函数增加主动过滤器时呈现的 panic - 修复局部状况下在工作表中增加表格导致的工作表损坏问题
- 修复局部状况下读取带有工夫类型数字格局单元格的值有误的问题
- 反对计算字符型公式单元格的值
- 修复在带有单元格表格的工作簿中增加表格时,表格 ID 生成有误的问题
- 修复局部状况下工作簿内容关系部件失落的问题
- 降级数字格局表达式解析器,以修复对于带有自定义文本的数字格局表达式格式化后果有误问题
- 更新了简体中文和繁体中文语言的预设数字格局列表
- 修复了局部状况下,自定义数字格局索引生成有误的问题
- 修复通过删除后再增加表格形式更新表格区域范畴时呈现谬误的问题
- 修复在应用流式读取函数后,所产生的临时文件无奈被清理的潜在问题
- 修复局部状况下公式计算结果有误的问题
- 修复并发读取单元格的值时呈现的竞态问题
- 修复依据款式索引获取款式定义时,局部款式定义缺失问题
- 修复局部状况下读取带有迷信记数法数字格局单元格的值后果有误的问题
- 修复局部状况下,读取带有工作表中不含
r
属性的行元素导致的 panic 问题 - 修复获取富文本单元格函数
GetCellRichText
在获取内联富文本时返回谬误的问题 - 修复局部状况下,因为共享字符串表索引计算有误导致的设置单元格的值后果有误问题
- 修复函数
GetConditionalFormats
读取带有“高于平均值”条件格局规定时 panic 的问题 - 修复了删除行之后合并单元格有误的问题
- 修复了
SetConditionalFormat
函数在创立带有多规定条件格局时,规定优先级有误的问题 - 修复了
GetConditionalFormats
函数无奈读取带有突变填充格局数据条的问题 - 修复了获取款式函数
GetStyle
或获取条件格局款式函数GetConditionalStyle
所返回的小数位数DecimalPlaces
字段值有误问题 - 修复了应用
CalcCellValue
函数时,开启RawCellValue
选项生效的问题
性能优化
- 进步了增加与删除数据透视表和图片的性能
- 升高了修剪单元格时的内存占用
其余
- Go Modules 依赖模块更新
- 单元测试与文档更新
- 蕴含简体中文、繁体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新,新增葡萄牙语版本文档
致谢
感激 Excelize 的所有贡献者,以下是为此版本提交代码的贡献者列表:
- fnickels (Francis Nickels III)
- m12r (Matthias Endler)
- Abdelaziz-Ouhammou
- Juneezee (Eng Zer Jun)
- yicixin (壹次心)
- TeeRenJing (rjtee)
- phperic (magicrabbit)
- kjushka (Anton Petrov)
- krstak (Marko Krstic)
- lpxxn (Nick)
- ByteFlyCoding
- yangliyl (Yang Li)
- 15535382838
- TajangSec (Tajang)
- lujin1 (lujin)
- parkoo (Tian)
- ZhangXiao1024 (ZX)
- zcgly
- bramvbilsen (Bram Vanbilsen)
- user65536
- tianaiyouqing (天爱有情)
- cuishuang (cui fliter)
- CooolNv (Xuesong)
- yuegu520
- oneweek20169902 (li)
- 3zmx
- 327674413
- melf-xyzh (MELF 晓宇)
- L4nn15ter
- rememberher (Jerry)
- ooooooobh (cherry)
- xxxwang1983
- funa12
- coolbit
- taitaking (zhukewen)
- kewenof
- ivekkairi (Vivek Kairi)
- edwardfward (Ed)