Contents

go第三方库-Github.com.xuri.excelize

godoc

github 官网

官方文档

Excelize 的目标是创建并维护一个 Go 语言版本的 Excel 文档 API,以处理符合基于 Office Open XML(OOXML)标准的电子表格文档,借助 Excelize 您可以使用 Go 读取和写入 MS Excel 文件

快速开始

创建 Excel 文档

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// 创建一个excel对象
f := excelize.NewFile()
defer func() {
    if err := f.Close(); err != nil {
        fmt.Println(err)
    }
}()
// 创建一个工作表
index, err := f.NewSheet("Sheet2")
// 设置单元格的值
f.SetCellValue("Sheet2", "A2", "Hello world.")
// 设置工作簿的默认工作表
f.SetActiveSheet(index)
// 根据指定路径保存文件
if err := f.SaveAs("Book1.xlsx"); err != nil {
    fmt.Println(err)
}

读取 Excel 文档

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// 打开文件并获取excel对象
f, err := excelize.OpenFile("Book1.xlsx")
defer func() {
    if err := f.Close(); err != nil {
        fmt.Println(err)
    }
}()
// 获取工作表中指定单元格的值
cell, err := f.GetCellValue("Sheet1", "B2")
// 获取 Sheet1 上所有单元格
rows, err := f.GetRows("Sheet1")
for _, row := range rows {
    for _, colCell := range row {
        fmt.Print(colCell, "\t")
    }
    fmt.Println()
}

在 Excel 文档中创建图表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
err := f.AddChart("Sheet1", "E1", &excelize.Chart{
    Type: excelize.Col3DClustered,
    Series: []excelize.ChartSeries{
        {
            Name:       "Sheet1!$A$2",
            Categories: "Sheet1!$B$1:$D$1",
            Values:     "Sheet1!$B$2:$D$2",
        },
        {
            Name:       "Sheet1!$A$3",
            Categories: "Sheet1!$B$1:$D$1",
            Values:     "Sheet1!$B$3:$D$3",
        },
        {
            Name:       "Sheet1!$A$4",
            Categories: "Sheet1!$B$1:$D$1",
            Values:     "Sheet1!$B$4:$D$4",
        }},
    Title: excelize.ChartTitle{
        Name: "Fruit 3D Clustered Column Chart",
    },
})

向 Excel 文档中插入图片

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import (
  _ "image/gif"
  _ "image/jpeg"
  _ "image/png"
)

//插入图片
err := f.AddPicture("Sheet1", "A2", "image.png", nil)
// 在工作表中插入图片,并设置图片的缩放比例
err := f.AddPicture("Sheet1", "D2", "image.jpg",
    &excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5})
// 在工作表中插入图片,并设置图片的打印属性
enable, disable := true, false
err := f.AddPicture("Sheet1", "H2", "image.gif",
    &excelize.GraphicOptions{
        PrintObject:     &enable,
        LockAspectRatio: false,
        OffsetX:         15,
        OffsetY:         10,
        Locked:          &disable,
    })
 |