组件分享之后端组件——在Golang中快速读取和创建Excel

背景

近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

组件基本信息

内容

本节我们分享的是基于Golang语言的Excel文件读写组件excelize

Excelize是一个用纯Go编写的库,提供了一组函数,允许你写入和读取XLAM / XLSM / XLSX / XLTM / XLTX文件。支持读取和写入由Microsoft Excel™2007及更高版本生成的电子表格文档。高兼容性支持复杂组件,提供流API,用于生成或从数据量大的工作表读取数据。此库需要Go 1.15或更高版本。完整的API文档可以通过go内置的文档工具查看,也可以在线查看go.dev和docs参考。

具体使用方式如下:

1、安装基础包

go get github.com/xuri/excelize/v2

2、创建一个excel并存储内容

package main

import (
    "fmt"

    "github.com/xuri/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    // 创建一个新的 sheet.
    index := f.NewSheet("Sheet2")
    // 设置单元格的值
    f.SetCellValue("Sheet2", "A2", "Hello world.")
    f.SetCellValue("Sheet1", "B2", 100)
    // 设置工作簿的活动表。
    f.SetActiveSheet(index)
    // 保存文件
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

这样我们就完成了一个简单的excel文件创建和内容存储,是不是很简单,在我们日常导出一些数据时这个方式是非常实用的一个方法。

3、如果想要读取excel,具体案例如下:

package main

import (
    "fmt"

    "github.com/xuri/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer func() {
        // 关闭电子表格。
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    // 通过给定的工作表名称和列名从单元格获取值。
    cell, err := f.GetCellValue("Sheet1", "B2")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(cell)
    // 获取Sheet1中的所有行。
    rows, err := f.GetRows("Sheet1")
    if err != nil {
        fmt.Println(err)
        return
    }
    for _, row := range rows {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

这样就可以有效读取excel中的内容了,在日常进行导入数据时进行excel解析和处理很方便。

本文声明:
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。