golang,go,博客,开源,编程

golang每日一库之xuri/excelize

Published on with 0 views and 0 comments

excelize 是一个用于处理 Excel 文件的 Go 语言库,支持读取、修改和创建 .xlsx 文件。它是一个非常流行的 Go 语言库,特别适用于需要操作 Excel 表格的 Go 开发者。这个库的功能丰富,支持大量的 Excel 特性,甚至可以操作图表、样式、单元格合并等。

xuri/excelize/v2 的基本特性:

xuri/excelize/v2excelize 库的最新版本(v2)。相较于 v1v2 引入了一些增强和优化,主要特点如下:

1. 创建与读取 Excel 文件

  • 创建新的 Excel 文件:你可以轻松创建新的工作簿和工作表,并填充数据。
  • 读取现有的 Excel 文件:读取并操作已存在的 .xlsx 文件,允许你访问、修改单元格内容、格式等。

2. 支持工作簿和工作表

  • 支持一个工作簿(workbook)包含多个工作表(worksheet)。
  • 你可以选择读取、修改、删除工作表,或者创建新的工作表。

3. 单元格操作

  • 读取单元格:可以读取特定单元格的值。
  • 写入单元格:可以写入不同类型的数据到单元格。
  • 支持常见数据类型,如字符串、数字、日期、布尔值等。
  • 支持对单元格应用格式化样式,如字体、颜色、对齐方式等。

4. 公式支持

  • 可以在单元格中插入 Excel 公式。
  • 支持公式的计算和动态更新。

5. 单元格样式

  • 支持设置字体、边框、颜色、对齐方式等单元格样式。
  • 支持日期、时间、数字等特定的单元格格式。

6. 支持图表

  • 可以在工作簿中插入图表(如条形图、折线图等)。
  • 支持图表的定制,包括图表样式、颜色等。

7. 文件格式

  • 支持 Excel 2007 及以上版本的 .xlsx 文件。
  • 提供了良好的性能,能够处理较大的 Excel 文件(如几十 MB)。

8. 跨平台兼容

  • 作为一个纯 Go 语言库,excelize 可以在 Linux、macOS、Windows 等多个平台上运行。

9. 丰富的错误处理

  • 提供详细的错误信息,帮助开发者调试和排查问题。

excelize/v2 的安装

你可以通过 go get 来安装 excelize

go get github.com/xuri/excelize/v2

示例代码

创建新的 Excel 文件

package main

import (
    "fmt"
    "log"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 创建一个新的工作簿
    f := excelize.NewFile()

    // 设置工作表 "Sheet1" 中 A1 单元格的值
    err := f.SetCellValue("Sheet1", "A1", "Hello Excel!")
    if err != nil {
        log.Fatal(err)
    }

    // 保存文件
    err = f.SaveAs("test.xlsx")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("File created successfully")
}

读取现有的 Excel 文件

package main

import (
    "fmt"
    "log"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 打开一个现有的 Excel 文件
    f, err := excelize.OpenFile("test.xlsx")
    if err != nil {
        log.Fatal(err)
    }

    // 读取工作表 "Sheet1" 中 A1 单元格的值
    cell, err := f.GetCellValue("Sheet1", "A1")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Cell A1 value:", cell)
}

修改现有 Excel 文件的单元格内容

package main

import (
    "fmt"
    "log"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 打开一个现有的 Excel 文件
    f, err := excelize.OpenFile("test.xlsx")
    if err != nil {
        log.Fatal(err)
    }

    // 设置工作表 "Sheet1" 中 B1 单元格的值
    err = f.SetCellValue("Sheet1", "B1", "New Value")
    if err != nil {
        log.Fatal(err)
    }

    // 保存文件
    err = f.Save()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("File updated successfully")
}

设置单元格样式

package main

import (
    "fmt"
    "log"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 创建一个新的工作簿
    f := excelize.NewFile()

    // 设置单元格 A1 的字体样式
    style, err := f.NewStyle(`{
        "font": {
            "bold": true,
            "size": 12,
            "color": "#FF0000"
        },
        "alignment": {
            "horizontal": "center",
            "vertical": "center"
        }
    }`)
    if err != nil {
        log.Fatal(err)
    }

    // 应用样式到单元格 A1
    err = f.SetCellValue("Sheet1", "A1", "Styled Cell")
    if err != nil {
        log.Fatal(err)
    }
    err = f.SetCellStyle("Sheet1", "A1", "A1", style)
    if err != nil {
        log.Fatal(err)
    }

    // 保存文件
    err = f.SaveAs("styled.xlsx")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("File with styled cell created successfully")
}

插入图表

package main

import (
    "fmt"
    "log"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 创建一个新的工作簿
    f := excelize.NewFile()

    // 向 Sheet1 中插入数据
    for i := 1; i <= 10; i++ {
        f.SetCellValue("Sheet1", fmt.Sprintf("A%d", i), i)
        f.SetCellValue("Sheet1", fmt.Sprintf("B%d", i), i*i)
    }

    // 创建一个图表
    err := f.AddChart("Sheet1", "D1", `{
        "type": "scatter",
        "series": [
            {
                "name": "Sheet1!$B$1",
                "categories": "Sheet1!$A$1:$A$10",
                "values": "Sheet1!$B$1:$B$10"
            }
        ]
    }`)
    if err != nil {
        log.Fatal(err)
    }

    // 保存文件
    err = f.SaveAs("chart.xlsx")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("File with chart created successfully")
}

excelize/v2 常用功能总结

  1. 读取/写入单元格数据GetCellValueSetCellValue 用于操作单元格的内容。
  2. 创建工作表和工作簿NewFile 创建工作簿,AddSheetGetSheetIndex 操作工作表。
  3. 设置单元格样式SetCellStyleNewStyle 用于设置字体、对齐方式、颜色等样式。
  4. 公式支持:可以通过 SetCellFormula 设置公式。
  5. 图表操作:通过 AddChart 向工作簿中插入图表。
  6. 跨平台支持:在 Linux、macOS、Windows 上都能顺利运行。

总结

xuri/excelize/v2 是一个强大而灵活的 Go 语言库,用于处理 Excel 文件,支持创建、读取、修改 Excel 文件,并提供丰富的功能,如图表、公式、单元格样式等。它能够高效地处理大量数据,适合用于生成报告、数据分析等场景。


标题:golang每日一库之xuri/excelize
作者:mooncakeee
地址:http://blog.dd95828.com/articles/2025/02/06/1738829015517.html
联系:scotttu@163.com