不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

Go导出Excel文件

需求

业务上经常会遇到要导出查询结果的Excel文档,我平时会用excelize包来做。

入门

下载

安装

1
go get github.com/360EntSecGroup-Skylar/excelize

更新

1
go get -u github.com/360EntSecGroup-Skylar/excelize

创建Excel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize"
)
func main() {
//创建一个文件
f := excelize.NewFile()
// 创建一个工作表
index := f.NewSheet("Sheet2")
// 合并单元格
f.MergeCell("Sheet1", "A1", "J1")
// 设置单元格的值
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// 设置工作簿的默认工作表
f.SetActiveSheet(index)
// 根据指定路径保存文件
err := f.SaveAs("./Book1.xlsx")
if err != nil {
fmt.Println(err)
}
}

读取Excel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize"
)
func main() {
f, err := excelize.OpenFile("./Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
// 获取工作表中指定单元格的值
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// 获取 Sheet1 上所有单元格
rows, err := f.GetRows("Sheet1")
for _, row := range rows {
for _, colCell := range row {
fmt.Print(colCell, "\t")
}
fmt.Println()
}
}

参考资料

Excelize v2.0 中文文档

------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!