Golang Excelize 2.0.1 版本发布

Golang Excelize 2.0.1 版本发布 Excelize

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

GitHub: github.com/360EntSecGroup-Skylar/excelize

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

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

发布说明

此版本中最显著的变化包括:

显著特性

  • 新函数 SetHeaderFooter() 初始化设置页眉和页脚支持,相关议题 #394
  • 新函数 SetColStyle() 支持按列设置样式,相关议题 #397
  • 新函数 SetDefaultFont()GetDefaultFont() 支持更改默认字体,相关议题 #390
  • 新函数 SetDocProps()GetDocProps() 支持设置和获取文档属性,相关议题 #415
  • 函数 AddChart() 现在支持创建 26 种新图表类型:柱形图和条形图的圆锥、棱锥和圆柱系列图表、3D 曲面图、线框 3D 曲面图、等高线和线框等高线图、气泡图和 3D 气泡图,不支持的图表类型会添加错误提示
  • 新函数 SetDefinedName()GetDefinedName() 支持设置和获取定义名称
  • 打开加密文件时提供更详细的错误信息
  • 函数 AddPicture() 现在支持添加 TIF 和 TIFF 格式图像

错误修复

  • 修复结构体字段定义错误并保留数据验证公式中的双引号
  • 修复因内部计数错误导致的注释重复问题,解决议题 #373
  • 修复因获取工作表映射错误导致的读取文件错误,解决议题 #404
  • 增强与数据透视表的兼容性,解决议题 #413
  • 增强与字体大小和粗体样式的兼容性,解决议题 #411、#420 和 #425
  • 增强重新计算调整器以解决在某些情况下插入或删除行后文件损坏的问题,相关议题 #421 和 #424
  • 修复在某些情况下隐藏工作表无效的问题,相关议题 #418
  • 通过避免强调主题颜色索引溢出修复多图表系列导致文件损坏的问题,相关议题 #422

其他

  • 提高单元测试覆盖率(行覆盖率:96.05%)
  • 优化代码,修复 golint 问题

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

1 回复

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


Excelize 2.0.1 版本的发布确实带来了许多实用的新功能和重要的错误修复,这对于处理 Excel 文件的 Go 开发者来说是一个重大更新。以下是一些关键特性的示例代码,帮助大家快速上手这些新功能。

设置页眉和页脚

新函数 SetHeaderFooter() 允许您为 Excel 工作表设置自定义页眉和页脚。这在生成报告时特别有用。

package main

import "github.com/360EntSecGroup-Skylar/excelize/v2"

func main() {
    f := excelize.NewFile()
    // 设置页眉和页脚
    err := f.SetHeaderFooter("Sheet1", &excelize.HeaderFooterOptions{
        DifferentFirst:   false,
        DifferentOddEven: false,
        OddHeader:        "&CHeader",
        OddFooter:        "&CFooter",
    })
    if err != nil {
        panic(err)
    }
    // 保存文件
    if err := f.SaveAs("header_footer.xlsx"); err != nil {
        panic(err)
    }
}

按列设置样式

SetColStyle() 函数使得按列应用样式变得简单,例如设置整列的字体或背景色。

package main

import "github.com/360EntSecGroup-Skylar/excelize/v2"

func main() {
    f := excelize.NewFile()
    // 创建样式
    style, err := f.NewStyle(`{"font":{"bold":true,"color":"#FF0000"}}`)
    if err != nil {
        panic(err)
    }
    // 将样式应用到 A 列
    err = f.SetColStyle("Sheet1", "A", style)
    if err != nil {
        panic(err)
    }
    // 保存文件
    if err := f.SaveAs("col_style.xlsx"); err != nil {
        panic(err)
    }
}

更改默认字体

使用 SetDefaultFont() 可以全局设置工作簿的默认字体,这在统一文档风格时非常方便。

package main

import "github.com/360EntSecGroup-Skylar/excelize/v2"

func main() {
    f := excelize.NewFile()
    // 设置默认字体为 Arial
    f.SetDefaultFont("Arial")
    // 获取当前默认字体
    font := f.GetDefaultFont()
    println("Default font:", font) // 输出: Default font: Arial
    // 保存文件
    if err := f.SaveAs("default_font.xlsx"); err != nil {
        panic(err)
    }
}

设置和获取文档属性

新函数 SetDocProps()GetDocProps() 允许管理文档属性,如标题、主题和作者。

package main

import "github.com/360EntSecGroup-Skylar/excelize/v2"

func main() {
    f := excelize.NewFile()
    // 设置文档属性
    err := f.SetDocProps(&excelize.DocProperties{
        Title:   "My Document",
        Subject: "Excelize Example",
        Creator: "Go Developer",
    })
    if err != nil {
        panic(err)
    }
    // 获取文档属性
    props, err := f.GetDocProps()
    if err != nil {
        panic(err)
    }
    println("Title:", props.Title) // 输出: Title: My Document
    // 保存文件
    if err := f.SaveAs("doc_props.xlsx"); err != nil {
        panic(err)
    }
}

添加新图表类型

AddChart() 现在支持更多图表类型,例如 3D 曲面图或气泡图。以下是一个添加柱形图的示例。

package main

import "github.com/360EntSecGroup-Skylar/excelize/v2"

func main() {
    f := excelize.NewFile()
    // 添加一些数据
    f.SetCellValue("Sheet1", "A1", "Item")
    f.SetCellValue("Sheet1", "A2", "Apple")
    f.SetCellValue("Sheet1", "A3", "Orange")
    f.SetCellValue("Sheet1", "B1", "Sales")
    f.SetCellValue("Sheet1", "B2", 50)
    f.SetCellValue("Sheet1", "B3", 30)
    // 定义图表
    err := f.AddChart("Sheet1", "D1", `{
        "type": "col",
        "series": [
            {"name":"Sheet1!$A$1","categories":"Sheet1!$A$2:$A$3","values":"Sheet1!$B$2:$B$3"}
        ],
        "title": {"name": "Sales Chart"}
    }`)
    if err != nil {
        panic(err)
    }
    // 保存文件
    if err := f.SaveAs("chart.xlsx"); err != nil {
        panic(err)
    }
}

设置和获取定义名称

SetDefinedName()GetDefinedName() 函数支持在 Excel 中管理命名范围,便于公式引用。

package main

import "github.com/360EntSecGroup-Skylar/excelize/v2"

func main() {
    f := excelize.NewFile()
    // 设置定义名称
    err := f.SetDefinedName(&excelize.DefinedName{
        Name:     "SalesRange",
        RefersTo: "Sheet1!$A$1:$B$3",
        Comment:  "Sales data range",
    })
    if err != nil {
        panic(err)
    }
    // 获取定义名称
    definedNames := f.GetDefinedName()
    for _, dn := range definedNames {
        println("Name:", dn.Name, "RefersTo:", dn.RefersTo)
    }
    // 保存文件
    if err := f.SaveAs("defined_name.xlsx"); err != nil {
        panic(err)
    }
}

这些示例展示了如何利用 Excelize 2.0.1 的新功能来增强 Excel 文件处理能力。错误修复如数据验证公式的改进和文件损坏问题的解决,进一步提升了库的稳定性和兼容性。建议开发者升级到此版本以获得最佳体验。

回到顶部