一、背景

项目中用到了Excel,主要在两个方面:
1、读取excel中的信息;
2、根据已知数据,生成excel的报表。

二、简介

因为使用的GO语言开发的项目,用到了"Excelize"这个包。
Excelize: 是Go语言编写的用于操作 Office Excel 文档基础库。
官网:https://xuri.me/excelize/
GitHub: https://github.com/360EntSecG...
GO.DEV: https://pkg.go.dev/github.com...

三、环境

开发环境:

环境 版本 备注
OS MacOS
Golang 1.14
Excelize v1.4.1

四、安装

使用最新版本 Excelize 要求您使用的 Go 语言为 1.10 或更高版本。

  • 安装命令
go get github.com/360EntSecGroup-Skylar/excelize

五、范例

5.1 生成excel

package main

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

func main() {
    f := excelize.NewFile()
    // 创建一个工作表
    index := f.NewSheet("Sheet1")

    //隐藏名称为 Sheet1 的工作表中的 D 至 F 列:
    f.SetColVisible("Sheet1", "D:F", false)

    //根据给定的工作表名称(大小写敏感)、列范围和宽度值设置单个或多个列的宽度。
    //例如设置名为 Sheet1 工作表上 A 到 D 列的宽度为 20:
    f.SetColWidth("Sheet1", "A", "D", 20)

    //根据给定的工作表名称(大小写敏感)、行号和高度值设置单行高度。
    //例如设置名为 Sheet1 工作表第二行行的高度为 50:
    f.SetRowHeight("Sheet1", 2, 50)

    // 设置单元格的值
    f.SetCellValue("Sheet1", "A2", 100)

    //根据给定的工作表名(大小写敏感)和单元格坐标区域合并单元格。例如,合并名为 Sheet1 的工作表上 D3:E9 区域内的单元格:
    f.MergeCell("Sheet1", "D3", "D4")


    f.SetCellValue("Sheet1", "D3", 1000)
    f.SetCellValue("Sheet1", "D5", "hello")

    // 设置工作簿的默认工作表
    f.SetActiveSheet(index)
    // 根据指定路径保存文件
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        println(err.Error())
    }
}

结果如下图
image.png

5.2 读取excel

表格内容
image.png

代码:

package main

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

func main() {
    f, err := excelize.OpenFile("book.xlsx")
    if err != nil {
        println(err.Error())
        return
    }
    // 获取工作表中指定单元格的值
    cell := f.GetCellValue("Sheet1", "B2")

    println(cell)

    // 获取 Sheet1 上所有单元格
    rows := f.GetRows("Sheet1")

    for _, row := range rows {
        for _, colCell := range row {
            print(colCell, "\t")
        }
        println()
    }
}

代码输出:
image.png

参考链接:


wmm369
125 声望12 粉丝

< 笃信力行 >