go語言操作excel

      網(wǎng)友投稿 901 2025-03-31

      Go語言操作excel

      簡介

      本文講解如何使用Go語言操作excel,使用到的庫是github.com/360EntSecGroup-Skylar/excelize/v2,本文內(nèi)容包含

      創(chuàng)建項(xiàng)目

      創(chuàng)建excel文件

      讀excel文件

      chart操作

      創(chuàng)建bar chart

      創(chuàng)建col chart

      創(chuàng)建line chart

      創(chuàng)建pie chart

      chart 相關(guān)參數(shù)

      創(chuàng)建項(xiàng)目

      # 新建一個(gè) excelDemo 文件夾 mkdir excelDemo cd excelDemo go mod init excelDemo # 創(chuàng)建main.go入口程序 touch main.go go get github.com/360EntSecGroup-Skylar/excelize/v2

      創(chuàng)建excel文件

      # 創(chuàng)建新建excel 文件dmeo的文件夾 mkdir create cd create touch main.go

      編寫main.go代碼,如下:

      package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize/v2" ) func main() { fmt.Println("新建excel的例子") f := excelize.NewFile() index := f.NewSheet("新的sheet") // 單個(gè)配置cell的值. f.SetCellValue("新的sheet", "A2", "Hello world.") f.SetCellValue("新的sheet", "B2", 100) f.SetCellValue("新的sheet", "C2", 200) f.SetCellValue("新的sheet", "D1", "我來試試中文") // 借用 map類型批量的寫數(shù)據(jù) categories := map[string]string{ "B1": "年齡", "A2": "張三", "A3": "李四", "A4": "王五"} for k, v := range categories { f.SetCellValue("新的sheet", k, v) } // Set active sheet of the workbook. f.SetActiveSheet(index) // Save spreadsheet by the given path. if err := f.SaveAs("Book1.xlsx"); err != nil { fmt.Println(err) } }

      執(zhí)行demo

      go run main..go

      執(zhí)行之后,會(huì)創(chuàng)建一個(gè)Book1.xlsxexcel文件,該文件內(nèi)容如下 :

      回到項(xiàng)目根目錄cd ../

      讀excel文件

      # 創(chuàng)建新建excel 文件dmeo的文件夾 mkdir read cd read touch main.go

      編寫main.go代碼,如下:

      package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize/v2" ) func main() { fmt.Println("讀excel的例子") f, err := excelize.OpenFile("read.xlsx") if err != nil { fmt.Println(err) return } fmt.Println("讀文件成功") // 從指定sheet以及指定一個(gè)cell里面獲取數(shù)據(jù) cell, err := f.GetCellValue("Sheet1", "B2") if err != nil { fmt.Println(err) return } fmt.Println(cell) // 獲取某個(gè)sheet的的所有行 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() } }

      執(zhí)行demo

      go run main.go

      如果文件內(nèi)容如下

      日志打印結(jié)果如下:

      chart操作

      接下來幾章會(huì)介紹如何在excel中利用數(shù)據(jù)顯示圖形,本文會(huì)介紹一些基本的圖形,如果讀者有更多需求,可參考Excelize的詳細(xì)文檔

      創(chuàng)建bar chart

      代碼

      package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize/v2" ) func main() { fmt.Println("寫圖的例子") categories := map[string]string{ "A2": "年齡", "B1": "張三", "C1": "李四", "D1": "王五"} values := map[string]int{ "B2": 5, "C2": 6, "D2": 5} f := excelize.NewFile() for k, v := range categories { f.SetCellValue("Sheet1", k, v) } for k, v := range values { f.SetCellValue("Sheet1", k, v) } // 支持的chart類型 https://github.com/360EntSecGroup-Skylar/excelize/blob/master/chart.go if err := f.AddChart("Sheet1", "E1", `{ "type": "bar", "series": [ { "name": "Sheet1!$A", "categories": "Sheet1!$B:$D", "values": "Sheet1!$B:$D" } ], "title": { "name": "Bar Chart" } }`); err != nil { fmt.Println(err) return } // Save spreadsheet by the given path. if err := f.SaveAs("圖例子bar.xlsx"); err != nil { fmt.Println(err) } }

      執(zhí)行效果 go run main.go

      創(chuàng)建col chart

      代碼

      package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize/v2" ) func main() { fmt.Println("寫圖的例子") categories := map[string]string{ "A2": "年齡", "B1": "張三", "C1": "李四", "D1": "王五"} values := map[string]int{ "B2": 5, "C2": 6, "D2": 5} f := excelize.NewFile() for k, v := range categories { f.SetCellValue("Sheet1", k, v) } for k, v := range values { f.SetCellValue("Sheet1", k, v) } // 支持的chart類型 https://github.com/360EntSecGroup-Skylar/excelize/blob/master/chart.go if err := f.AddChart("Sheet1", "E1", `{ "type": "bar", "series": [ { "name": "Sheet1!$A", "categories": "Sheet1!$B:$D", "values": "Sheet1!$B:$D" } ], "title": { "name": "Bar Chart" } }`); err != nil { fmt.Println(err) return } // Save spreadsheet by the given path. if err := f.SaveAs("圖例子bar.xlsx"); err != nil { fmt.Println(err) } }

      執(zhí)行效果

      創(chuàng)建line chart

      代碼

      package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize/v2" ) func main() { fmt.Println("寫圖的例子") categories := map[string]string{ "B1": "2018","C1": "2019","D1": "2020","E1": "2020", "A2": "張三", "A3": "李四", "A4": "王五"} values := map[string]int{ "B2": 107, "C2": 115, "D2": 120,"E2": 136, "B3": 110, "C3": 124, "D3": 140,"E3": 150, "B4": 115, "C4": 126, "D4": 132,"E4": 140, } f := excelize.NewFile() for k, v := range categories { f.SetCellValue("Sheet1", k, v) } for k, v := range values { f.SetCellValue("Sheet1", k, v) } // 支持的chart類型 https://github.com/360EntSecGroup-Skylar/excelize/blob/master/chart.go if err := f.AddChart("Sheet1", "F1", `{ "type": "line", "series": [ { "name": "Sheet1!$A", "categories": "Sheet1!$B:$E", "values": "Sheet1!$B:$E" }, { "name": "Sheet1!$A", "categories": "Sheet1!$B:$E", "values": "Sheet1!$B:$E" }, { "name": "Sheet1!$A", "categories": "Sheet1!$B:$E", "values": "Sheet1!$B:$E" } ], "title": { "name": "Line Chart" }, "plotarea": { "show_bubble_size": true, "show_cat_name": false, "show_leader_lines": false, "show_percent": true, "show_series_name": false, "show_val": true } }`); err != nil { fmt.Println(err) return } // Save spreadsheet by the given path. if err := f.SaveAs("圖例子line.xlsx"); err != nil { fmt.Println(err) } }

      執(zhí)行效果:

      go語言操作excel

      創(chuàng)建pie chart

      代碼

      package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize/v2" ) func main() { fmt.Println("寫圖的例子") categories := map[string]string{"A2": "營業(yè)額", "B1": "張三", "C1": "李四", "D1": "王五"} values := map[string]float32{"B2": 100, "C2": 130.5, "D2": 150} 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": "pie", "series": [ { "name": "Sheet1!$A$2", "categories": "Sheet1!$B$1:$D$1", "values": "Sheet1!$B$2:$D$2" } ], "format": { "x_scale": 1.0, "y_scale": 1.0, "x_offset": 15, "y_offset": 10, "print_obj": true, "lock_aspect_ratio": false, "locked": false }, "legend": { "position": "bottom", "show_legend_key": false }, "title": { "name": "營業(yè)額" }, "plotarea": { "show_bubble_size": true, "show_cat_name": false, "show_leader_lines": false, "show_percent": true, "show_series_name": false, "show_val": true }, "show_blanks_as": "gap" } `); err != nil { fmt.Println(err) } // 保存工作簿 if err := f.SaveAs("Book1.xlsx"); err != nil { fmt.Println(err) } }

      執(zhí)行效果

      chart 相關(guān)參數(shù)

      type:chart的類型 ,支持的圖表參考:https://www.bookstack.cn/read/excelize-2.2-zh/e83b0c83bed9634a.md

      series : 數(shù)據(jù)信息集合

      name: 序列名稱

      categories: 分類軸標(biāo)簽

      values: 圖表數(shù)據(jù)區(qū)域

      line: 如果是折線圖有效

      legend: 圖例設(shè)置方法

      position: 圖例位置,top/buttom/left/right/top_right

      show_legend_key: bool,是否顯示圖例,默認(rèn)flase

      plotarea: 設(shè)置標(biāo)簽

      show_bubble_size,bool 默認(rèn)flase,氣泡大小

      show_cat_name,bool,默認(rèn)ture,類別名稱

      show_leader_lines ,bool,默認(rèn)flase,顯示引導(dǎo)線

      show_percent,bool,默認(rèn)flase,百分比

      show_series_name,bool,默認(rèn)flase,系列名稱

      show_val,bool,默認(rèn)flase,值

      通過參數(shù) x_axis 和 y_axis 參數(shù)設(shè)置坐標(biāo)軸選項(xiàng)。

      更多參考 https://www.bookstack.cn/read/excelize-2.2-zh/e83b0c83bed9634a.md

      Go

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:怎么在Excel表格設(shè)置有效的的日期輸入范圍
      下一篇:怎樣把Word里的圖表橫縱坐標(biāo)互換(怎么把圖表橫縱坐標(biāo)換一下)
      相關(guān)文章
      亚洲一区二区三区在线观看蜜桃| 亚洲欧洲精品久久| 亚洲综合无码无在线观看| 亚洲国产精品成人精品软件| 亚洲国产第一页www| 亚洲综合自拍成人| 久久亚洲日韩看片无码| 亚洲黄色免费网站| 亚洲视屏在线观看| 亚洲日本香蕉视频| 色婷五月综激情亚洲综合 | 亚洲精品又粗又大又爽A片| 亚洲另类自拍丝袜第五页| 亚洲精品亚洲人成在线| 亚洲av永久中文无码精品综合 | 亚洲国产欧洲综合997久久| 亚洲hairy多毛pics大全| 国产亚洲视频在线| 亚洲天堂中文字幕在线| 亚洲一区二区三区AV无码 | 亚洲爆乳大丰满无码专区| 亚洲AV日韩AV一区二区三曲| 国产精品自拍亚洲| 久久亚洲国产精品123区| 亚洲精品少妇30p| 亚洲国产成人久久综合一| 亚洲大尺码专区影院| 亚洲香蕉久久一区二区三区四区| 亚洲精品精华液一区二区| 亚洲高清无码在线观看| 亚洲永久精品ww47| 亚洲一本综合久久| 亚洲一线产区二线产区精华| 亚洲欧美自偷自拍另类视| 亚洲AV无码专区日韩| 亚洲桃色AV无码| 久久精品亚洲中文字幕无码麻豆| 亚洲另类精品xxxx人妖| 亚洲精品国产首次亮相| 国产精品亚洲二区在线观看| 亚洲av网址在线观看|