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 个导出常量:
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 依赖模块更新
- 单元测试与文档更新
- 优化外部变量与函数命名
- 蕴含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新
致谢
感激 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)