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
2022 年 4 月 11 日,社区正式公布了 2.6.0 版本,该版本蕴含了多项新增性能、谬误修复和兼容性晋升优化。上面是无关该版本更新内容的摘要,残缺的更改列表可查看 changelog。
此版本中最显著的变动包含:
兼容性提醒
- 重命名导出常量
NameSpaceDublinCoreMetadataIntiative
为NameSpaceDublinCoreMetadataInitiative
以修复拼写错误 - 重命名导出变量
ErrUnsupportEncryptMechanism
为ErrUnsupportedEncryptMechanism
- 重命名导出变量
ErrDataValidationFormulaLenth
为ErrDataValidationFormulaLength
- 重命名导出变量
ErrDefinedNameduplicate
为ErrDefinedNameDuplicate
- 移除了导出变量
XMLHeaderByte
- 移除了设置数据数据验证列表函数
SetSqrefDropList
的第二个形参isCurrentSheet
和异样返回值 - 移除了行迭代器中的导出字段
TotalRows
新增性能
ProtectSheet
新增反对通过指定的算法爱护工作表,反对的算法包含: XOR、MD4、MD5、SHA1、SHA256、SHA384 和 SHA512UnprotectSheet
反对通过指定第二个可选参数在移除工作表爱护时验证明码- 新增 71 项公式函数: AVERAGEIFS, BETADIST, BETA.DIST, BETAINV, BETA.INV, BINOMDIST, BINOM.DIST, BINOM.DIST.RANGE, BINOM.INV, CHIINV, CHITEST, CHISQ.DIST, CHISQ.DIST.RT, CHISQ.INV, CHISQ.INV.RT, CHISQ.TEST, CONFIDENCE.T, CORREL, COVAR, COVARIANCE.P, CRITBINOM, ERROR.TYPE, EXPON.DIST, EXPONDIST, F.DIST, F.DIST.RT, FDIST, F.INV, F.INV.RT, FINV, FORMULATEXT, F.TEST, FTEST, GAMMA.DIST, GAMMADIST, GAMMA.INV, GAMMAINV, GAMMALN.PRECISE, GAUSS, HOUR, HYPGEOM.DIST, HYPGEOMDIST, INDIRECT, LOGINV, LOGNORM.DIST, LOGNORMDIST, LOGNORM.INV, MODE, MODE.MULT, MODE.SNGL, NEGBINOM.DIST, NEGBINOMDIST, PHI, SECOND, SERIESSUM, SUMIFS, SUMPRODUCT, SUMX2MY2, SUMX2PY2, SUMXMY2, T.DIST, T.DIST.2T, T.DIST.RT, TDIST, TIMEVALUE, T.INV, T.INV.2T, TINV, T.TEST, TTEST, TYPE
- 保留或另存为工作簿时减少对文件扩展名进行查看
- 反对设置工作簿视图模式和显示 / 暗藏标尺
- 引入依赖库 NFP (number format parser) 以减少对自定义工夫、日期和文本类型数字格局的反对,可对蕴含 19 种语言(南非荷兰语、孟加拉语、汉语、英语、法语、德语、奥地利语、爱尔兰语、意大利语、俄语、西班牙语、泰语、藏语、土耳其语、威尔士语、沃洛夫语、科萨语、彝语和祖鲁语)本地月份名称和 12 小时制格局的数字格局表达式进行解析,相干 issues #660, #764, #1093, #1112 和 #1133
- 新增 API:
SetWorkbookPrOptions
和GetWorkbookPrOptions
反对设置和获取工作簿中的FilterPrivacy
与CodeName
属性,以解除局部状况下向工作簿中嵌入 VBA 工程时的限度,相干 issue #1148 - 公式计算引擎反对中断运算符后蕴含无参数公式函数的计算
- 反对以文本模式读取布尔型单元格的值
- 通过
AddChart
函数增加圆环图时,反对指定圆环图内径大小,解决 issue #1172 - 新增导出 4 项错误信息
ErrPasswordLengthInvalid
,ErrUnsupportedHashAlgorithm
,ErrUnsupportedNumberFormat
,ErrWorkbookExt
,以便开发者可依据不同的谬误类型进行采取相应解决
兼容性晋升
- 晋升与 LibreOffice 电子表格应用程序的兼容性,修复在 LibreOffice 中关上的工作表名蕴含空格时,主动过滤器生效的问题,解决 issue #1122
- 晋升对工作簿中代替内容的反对,保留工作簿、工作表以及 drawingML 中的代替内容
- 晋升与页面设置中打印质量 DPI 设置属性的兼容性
问题修复
- 修复另存为工作簿时,页面布局属性失落的问题,解决 issue #1117
- 修复局部状况下,对工作表进行批改后合并单元格区域未更新的问题
- 修复款式解析异样导致的粗体和局部其余字体款式失落问题,解决 issue #1119
- 修复局部状况下将文档保留为 XLAM / XLSM / XLTM / XLTX 格局后文档损坏的问题
- 单元格款式反对继承行 / 列款式,以修复对工作表进行批改后合并单元格区域单元格款式不正确的问题,解决 issue #1129
- 修复局部状况下获取单元格款式 ID 谬误的问题
- 修复编号为 42 的内建数字格局定义谬误的问题
- 修复局部状况下数字精度解析谬误的问题
SetCellDefault
反对设置非数字类型单元格的值,解决 issue #1139- 修复局部状况下另存为工作簿时,显示或暗藏工作表标签属性失落的问题,解决 issue #1160
- 修复局部状况下嵌套公式计算错误的问题,解决 issue #1164
- 修复局部状况下公式计算结果精度不精确以及在 x86 和 arm64 架构 CPU 下公式计算结果精度不统一的问题
- 修复局部状况下应用迷信记数法示意的数值解析失败的问题
- 修复图表轴最大值最小值为 0 时不起作用的问题
性能优化
- 进步应用行迭代器进行流式读取的性能,当读取蕴含大规模数据的电子表格文档时,内存开销相较于上一版本升高最高约 50%,内存垃圾回收次数升高约 80%
其余
- Go Modules 依赖模块更新
- 单元测试与文档更新
- 蕴含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新