Golang Excelize 2.0.2 正式发布

Golang Excelize 2.0.2 正式发布 Excelize Logo

Excelize 是一个用纯 Go 语言编写的库,提供了一系列函数,允许您读写 XLSX 文件。支持读写由 Microsoft Excel™ 2007 及更高版本生成的 XLSX 文件。支持保存文件而不丢失 XLSX 的原始图表。

GitHub: github.com/xuri/excelize

我们很高兴地宣布 2.0.2 版本的发布。此版本包含一些新的功能领域和大量错误修复。

变更摘要可在发布说明中查看。完整的变更列表可在更新日志中找到。

发布说明

此版本中最值得注意的变更包括:

兼容性

升级要求 Go 语言版本为 1.10 或更高。

显著特性

  • 创建数据透视表支持。新增函数 AddPivotTable()
  • 创建迷你图支持。新增函数 AddSparkline()
  • 新增函数 GroupSheets()UngroupSheets() 支持工作表的分组与取消分组
  • 新增函数 AddVBAProject() 以支持添加包含函数和/或宏的 vbaProject.bin 文件
  • 函数 SetPageLayout() 现在支持设置适应宽度和高度,相关议题 #432
  • 函数 SetSheetViewOptions() 现在支持设置是否“在值为零的单元格中显示零”
  • 允许在 SetCellFormula() 中访问更多公式属性,支持设置公式类型和 ref 属性
  • 字体删除线样式支持,相关议题 #482

错误修复

  • 修复了某些情况下批注文本丢失的问题,解决议题 #434
  • 通过重新计算合并单元格调整器的偏移量,修复了某些情况下 RemoveRow() 越界的问题,解决议题 #437
  • 修复了数据验证下拉列表中无效公式的问题
  • 修复了在迭代中调用 Save() 方法导致文件损坏的问题,解决议题 #443
  • 兼容 workbook.xml.rels 中不同类型的相对路径,以修复某些情况下读取文件失败的问题,解决议题 #442
  • 修复了在某些情况下删除所有合并单元格时导致文件损坏的问题
  • 修复了在某些情况下工作表保护设置无效的问题,解决议题 #454
  • 通过改为基于索引检查工作表列表,修复了在某些情况下 GetSheetName 不工作的问题,解决议题 #457
  • 添加了多行内联字符串支持,相关议题 #464
  • 修复了在 32 位操作系统上数值型单元格值溢出的问题,相关议题 #386
  • 修复了 Go 模块依赖错误,相关议题 #466#480
  • 修复了在某些情况下调用 SetSheetPrOptions() 导致文件损坏的问题,解决议题 #483

性能

  • 性能优化,文件读取速度更快,相关议题 #439

杂项

  • SetSheetRow() 中添加了缺失的错误检查
  • 优化代码,合并内部函数:
    workBookRelsWriter, drawingRelsWriter 合并为 relsWriter;
    drawingRelsReader, workbookRelsReader, workSheetRelsReader 合并为 relsReader;
    addDrawingRelationships, addSheetRelationships 合并为 addRels
    

更多关于Golang Excelize 2.0.2 正式发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang Excelize 2.0.2 正式发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Excelize 2.0.2 的发布确实带来了许多实用的新功能和稳定性改进。作为 Go 语言处理 Excel 文件的主流库,这些更新进一步提升了开发效率。以下是一些关键特性的代码示例,帮助大家快速上手:

1. 创建数据透视表 使用新增的 AddPivotTable() 函数可以轻松生成数据透视表:

f := excelize.NewFile()
// 假设已有数据区域 "Sheet1!$A$1:$E$5"
err := f.AddPivotTable(&excelize.PivotTableOptions{
    DataRange:       "Sheet1!$A$1:$E$5",
    PivotTableRange: "Sheet1!$G$2",
    Rows:            []string{"Column1"},
    Columns:         []string{"Column2"},
    Data:            []string{"Column3"},
})
if err != nil {
    fmt.Println(err)
}

2. 添加迷你图 AddSparkline() 函数支持创建迷你图,直观展示数据趋势:

err := f.AddSparkline("Sheet1", &excelize.SparklineOptions{
    Location: []string{"F2", "F3", "F4"},
    Range:    []string{"A2:E2", "A3:E3", "A4:E4"},
    Markers:  true,
})
if err != nil {
    fmt.Println(err)
}

3. 工作表分组 新增的 GroupSheets()UngroupSheets() 便于管理多个工作表:

// 分组工作表
err := f.GroupSheets([]string{"Sheet1", "Sheet2"})
if err != nil {
    fmt.Println(err)
}

// 取消分组
err = f.UngroupSheets()
if err != nil {
    fmt.Println(err)
}

4. 设置页面布局适应宽度/高度 SetPageLayout() 现在支持自适应设置:

err := f.SetPageLayout("Sheet1", 
    excelize.FitToHeight(1),
    excelize.FitToWidth(1),
)
if err != nil {
    fmt.Println(err)
}

5. 设置公式属性 SetCellFormula() 支持更多公式属性配置:

err := f.SetCellFormula("Sheet1", "A1", "SUM(B1:C1)", 
    excelize.FormulaTypeShared,
    excelize.Ref("A1:A10"),
)
if err != nil {
    fmt.Println(err)
}

6. 字体删除线样式 新增的字体删除线支持:

style, err := f.NewStyle(&excelize.Style{
    Font: &excelize.Font{
        Strike: true,
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "A1", "A1", style)

这些新功能结合错误修复(如批注文本丢失、RemoveRow 越界问题等)和性能优化,使得 Excelize 在处理复杂 Excel 文件时更加可靠高效。升级到 2.0.2 版本可以显著改善现有项目的稳定性和功能覆盖。

回到顶部