【GoCN酷Go推薦】Go 操作 excel 利器 excelize
excelize 簡介
應(yīng)用場景分析
這個庫基本上不用多說什么了吧!
對于非專業(yè)人士來說,可用于處理 excel 數(shù)據(jù),功能強大,解放雙手!
對于專業(yè)程序員來說,如可以增加我們應(yīng)用程序中的 excel 導(dǎo)入導(dǎo)出功能!
快速使用 excelize
安裝 excelize
go get github.com/360EntSecGroup-Skylar/excelize
如果你使用go module,使用下面的安裝命令。
go get github.com/360EntSecGroup-Skylar/excelize/v2
入門案例
首先需要明白的是 excel 中唯一確定單元格需要兩個參數(shù):
sheet,默認是 sheet1 坐標

寫入到excel
package main
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize/v2"
)
func main() {
f := excelize.NewFile()
// 創(chuàng)建一個 sheet
index := f.NewSheet("Sheet2")
// 向單元格中寫入值
f.SetCellValue("Sheet2", "A2", "gocn")
f.SetCellValue("Sheet1", "B2", 100)
// 設(shè)置文件打開后顯示哪個 sheet, 0 表示 sheet1
f.SetActiveSheet(index)
// 保存到文件
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
讀取 excel 中的內(nèi)容
package main
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize/v2"
)
func main() {
//打開文件
f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
// 獲取單元格內(nèi)容
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
如果以上功能仍然不能滿足于你,不用擔心!
因為 excelize 遠遠不止以上功能,它還提供了:
添加圖表 添加圖片
向 excel 中添加圖表
package main
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize/v2"
)
func main() {
categories := map[string]string{
"A2": "Small", "A3": "Normal", "A4": "Large",
"B1": "Apple", "C1": "Orange", "D1": "Pear"}
values := map[string]int{
"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
f := excelize.NewFile()
for k, v := range categories {
f.SetCellValue("Sheet1", k, v)
}
for k, v := range values {
f.SetCellValue("Sheet1", k, v)
}
//添加圖表
if err := f.AddChart("Sheet1", "E1", `{
"type": "col3DClustered",
"series": [
{
"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":
{
"name": "Fruit 3D Clustered Column Chart"
}
}`); err != nil {
fmt.Println(err)
return
}
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}

向 excel 中添加圖片
package main
import (
"fmt"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"github.com/360EntSecGroup-Skylar/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
// Insert a picture.
if err := f.AddPicture("Sheet1", "A2", "logo.png", ""); err != nil {
fmt.Println(err)
}
// Save the spreadsheet with the origin path.
if err = f.Save(); err != nil {
fmt.Println(err)
}
}

參考資料
https://github.com/360EntSecGroup-Skylar/excelize
還想了解更多嗎?
更多請查看:https://github.com/360EntSecGroup-Skylar/excelize
歡迎加入我們GOLANG中國社區(qū):https://gocn.vip/
《酷Go推薦》招募:
各位Gopher同學(xué),最近我們社區(qū)打算推出一個類似GoCN每日新聞的新欄目《酷Go推薦》,主要是每周推薦一個庫或者好的項目,然后寫一點這個庫使用方法或者優(yōu)點之類的,這樣可以真正的幫助到大家能夠?qū)W習(xí)到新的庫,并且知道怎么用。
大概規(guī)則和每日新聞類似,如果報名人多的話每個人一個月輪到一次,歡迎大家報名!(報名地址:https://wj.qq.com/s2/7734329/3f51)

?? 各位Gopher們,注意啦!
Gopher China2021 大會早鳥票最后一天啦,
還沒報名的童鞋們趕快抓住最后的機會!!!

評論
圖片
表情
