Golang Excel文档处理库Excelize 2.6.1版本发布
Golang Excel文档处理库Excelize 2.6.1版本发布

Excelize 是一个用纯 Go 语言编写的库,提供了一系列函数,允许您读写 XLAM / XLSM / XLSX / XLTM / XLTX 文件。支持读写由 Microsoft Excel™ 2007 及更高版本生成的电子表格文档。通过高兼容性支持复杂组件,并提供了流式 API,用于从包含大量数据的工作表中生成或读取数据。
GitHub: github.com/xuri/excelize
我们很高兴地宣布 2.6.1 版本的发布。本次更新包含了一些新的功能领域和大量的错误修复。
变更摘要可在发布说明中查看。完整的变更列表可在更新日志中找到。
发布说明
此版本中最显著的变化包括:
兼容性
- 将导出的类型
TabColor重命名为TabColorRGB - 将导出的常量
TotalColumns重命名为MaxColumns - 将导出的变量
ErrMaxFileNameLength重命名为ErrMaxFilePathLength - 将导出的变量
ErrWorkbookExt重命名为ErrWorkbookFileFormat - 移除导出的变量
ErrEncrypt - 工作表名称改为不区分大小写
显著特性
- 新增支持 34 个公式函数:CONVERT, COVARIANCE.S, DAVERAGE, DAYS360, DCOUNT, DCOUNTA, DGET, DMAX, DMIN, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DVAR, DVARP, EDATE, EOMONTH, EUROCONVERT, GROWTH, HYPERLINK, MINVERSE, MMULT, NETWORKDAYS, NETWORKDAYS.INTL, PEARSON, RSQ, SKEW.P, SLOPE, STDEVPA, STEYX, TREND, WEEKNUM, WORKDAY, WORKDAY.INTL
- 新增
DeleteComment函数支持删除批注,相关议题 #849 AddShape函数现在支持为形状分配宏- 添加对 1900 和 1904 日期系统的支持,相关议题 #1212
- 添加支持更新单元格超链接,相关议题 #1217
AddPicture函数现在允许插入 EMF, WMF, EMZ 和 WMZ 格式的图片,相关议题 #1225- 使工作簿打开失败异常信息更清晰,新增导出的变量
ErrWorkbookPassword用于在收到错误的工作簿密码时显示错误信息 - 新增导出的常量
MinFontSize,MinColumns和MaxCellStyles - 为公式计算引擎添加数组公式支持
- 支持通过密码加密工作簿,相关议题 #199
RichTextRun支持通过vertAlign属性设置上标和下标DeleteDataValidation函数支持删除工作表中的所有数据验证,相关议题 #1254- 公式计算引擎支持条件标准表达式中的百分位符号
- 公式计算引擎支持依赖公式的计算,相关议题 #1262
- 添加导出选项
MaxCalcIterations用于指定迭代计算的最大迭代次数 - 添加导出类型
ColorMappingType用于颜色转换类型枚举 - 支持在删除和插入列/行时调整表格范围
- 支持设置和获取工作表标签的颜色索引、主题和色调,相关议题 #1283
- 新增导出函数
GetRowOpts用于行迭代器,以支持获取行属性,相关议题 #1296
提升兼容性
- 提升与无效内部样式计数的兼容性,解决问题 #1211
- 提升与 Google Sheet 的兼容性,解决问题 #1244
- 流式写入器现在在设置行的单元格值时跳过写入 nil 值,相关议题 #1299
错误修复
- 修复当数据透视表的数据和行/列使用相同字段时生成的文件损坏问题,解决问题 #1203
- 修复因缺少单元格类型检查而导致获取富文本值不正确的问题,解决问题 #1213
- 修复数字格式化时单元格数据类型转换结果不正确的问题,解决问题 #1219
- 修复当单元格使用 0 占位符数字格式样式时读取单元格为空的问题,解决问题 #1312 和 #1313
- 修复设置单元格值时列和行样式继承问题,解决问题 #1163
- 修复在空工作表视图的工作表上添加窗格时发生 panic 的问题
- 修复某些情况下多参数公式计算的问题
- 修复因工作表页眉页脚字段顺序不正确导致生成的文件损坏问题,解决问题 #1257
- 修复某些情况下设置单元格值失败的问题,解决问题 #1264
- 修复在没有视图选项的工作表上设置或获取工作表视图选项时发生 panic 的问题
- 修复因文档核心属性中创建或修改的 dcterms 为空导致生成的工作簿损坏问题
- 修复创建新工作表后文档属性丢失的问题,解决问题 #1298
性能
- 提升设置行和合并单元格的性能,修复解决问题 #1129 时的性能影响
- 优化公式计算性能
- 减少内存使用并加速
AddComment函数,解决问题 #1310
其他
- 已更新依赖模块
- 更新了单元测试和 godoc,使测试用例兼容 go1.19
- 更新了多语言文档网站,支持阿拉伯语、德语、西班牙语、英语、法语、俄语、中文、日语和韩语
致谢
感谢所有为 Excelize 做出贡献的人。以下是此版本中有代码贡献的贡献者列表:
- JDavidVR (David)
- sceneq
- Juneezee (Eng Zer Jun)
- MichealJl (jialei)
- ww1516123
- z-hua (z.hua)
- xdlrt (yeshu)
- eaglexiang (Eagle Xiang)
- MJacred
- ReganYue (Regan Yue)
- thomascharbonnel (Thomas Charbonnel)
- ee0703 (EE)
- NaturalGao (NaturalGao)
- Sangua633
更多关于Golang Excel文档处理库Excelize 2.6.1版本发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang Excel文档处理库Excelize 2.6.1版本发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Excelize 2.6.1版本的发布带来了许多重要的改进和新功能,对于处理Excel文档的Go开发者来说是一个值得关注的更新。以下是一些关键点的分析和示例代码:
1. 兼容性变更
类型和常量的重命名提高了代码的可读性。例如,TabColor改为TabColorRGB更明确地表示了其用途。
// 以前
color := excelize.TabColor{
RGB: "FF0000",
}
// 现在
color := excelize.TabColorRGB{
RGB: "FF0000",
}
2. 新增公式函数支持
新增34个公式函数,如CONVERT、NETWORKDAYS等,扩展了计算能力。
f := excelize.NewFile()
f.SetCellFormula("Sheet1", "A1", "NETWORKDAYS(\"2023-01-01\", \"2023-12-31\")")
result, _ := f.CalcCellValue("Sheet1", "A1")
fmt.Println(result) // 输出工作日天数
3. 删除批注功能
DeleteComment函数允许删除特定单元格的批注。
f.DeleteComment("Sheet1", "A1")
4. 形状宏支持
AddShape现在支持为形状分配宏,增强了交互性。
f.AddShape("Sheet1", &excelize.Shape{
Macro: "MyMacro",
Type: "rect",
})
5. 日期系统支持
添加对1900和1904日期系统的支持,处理不同Excel版本的兼容性。
f.SetWorkbookPrOptions(excelize.WorkbookPrOptions{
Date1904: excelize.BoolPtr(true),
})
6. 更新超链接
支持更新现有单元格的超链接。
f.SetCellHyperLink("Sheet1", "A1", "https://github.com", "External", excelize.HyperlinkOpts{
Display: &display,
Tooltip: &tooltip,
})
7. 图片格式扩展
AddPicture现在支持EMF、WMF等矢量图片格式。
f.AddPicture("Sheet1", "A1", "image.emf", nil)
8. 工作簿加密
支持通过密码加密工作簿,增强文件安全性。
f.WriteWithPassword("encrypted.xlsx", "password123")
9. 富文本上标/下标
RichTextRun支持vertAlign属性设置上标和下标。
f.SetCellRichText("Sheet1", "A1", []excelize.RichTextRun{
{Text: "Normal", Font: &excelize.Font{Size: 12}},
{Text: "Superscript", Font: &excelize.Font{Size: 12, VertAlign: "superscript"}},
})
10. 删除数据验证
DeleteDataValidation可以删除工作表中的所有数据验证规则。
f.DeleteDataValidation("Sheet1")
11. 数组公式支持
公式计算引擎现在支持数组公式。
f.SetCellFormula("Sheet1", "A1", "{=SUM(B1:B10*C1:C10)}")
12. 迭代计算控制
MaxCalcIterations选项允许控制迭代计算的最大次数。
f.SetWorkbookPrOptions(excelize.WorkbookPrOptions{
MaxCalcIterations: excelize.IntPtr(100),
})
13. 表格范围调整
删除和插入列/行时自动调整表格范围。
f.RemoveCol("Sheet1", "B") // 自动调整表格范围
14. 工作表标签颜色
支持设置和获取工作表标签的颜色。
f.SetSheetPrOptions("Sheet1", excelize.SheetPrOptions{
TabColor: &excelize.TabColorRGB{RGB: "FF0000"},
})
15. 行迭代器增强
GetRowOpts函数支持获取行属性,如高度。
rows, _ := f.Rows("Sheet1")
for rows.Next() {
row, _ := rows.GetRowOpts()
fmt.Println(row.Height)
}
性能优化
性能改进包括提升设置行和合并单元格的速度,优化公式计算,减少内存使用。例如,AddComment的内存使用和速度得到改善。
// 性能优化后的批注添加
f.AddComment("Sheet1", excelize.Comment{
Cell: "A1",
Author: "Author",
Text: "This is a comment.",
})
这些更新使Excelize更加强大和高效,建议开发者升级到2.6.1版本以利用新功能。具体的变更细节和完整列表请参考发布说明和更新日志。

