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

Golang Excel文档处理库Excelize 2.6.1版本发布 Excelize 2.6.1 发布 – 用于电子表格 (Excel) 文档的 Go 语言 API

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, MinColumnsMaxCellStyles
  • 为公式计算引擎添加数组公式支持
  • 支持通过密码加密工作簿,相关议题 #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

1 回复

更多关于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个公式函数,如CONVERTNETWORKDAYS等,扩展了计算能力。

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版本以利用新功能。具体的变更细节和完整列表请参考发布说明和更新日志。

回到顶部