![]()
Go表格处理
1.下载程序扩展包
//地址: https://goproxy.cn/
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
//使用的包:
github.com/tealeg/xlsx
//get下载:
go get github.com/tealeg/xlsx
//mod下载:
go mod download github.com/tealeg/xlsx
C:\Users\vSphere\go\src\xlsx>go mod init xlsx
go: creating new go.mod: module xlsx
C:\Users\vSphere\go\src\xlsx>go run 01.创建xlsx.go
使用mod文件中的内容进行包拉取, go mod tidy
2.创建xlsx文件
package main
import (
"fmt"
"github/tealeg/xlsx"
)
func main() {
//新建表格
file := xlsx.NewFile()
//保存文件
err := file.Save("F:/文件.xlsx")
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println("创建成功!")
}
}
3.写入表格
package main
import (
"fmt"
"github/tealeg/xlsx"
)
// 列
type Cell struct {
Cname []string
}
// 行
type Row struct {
Cell
}
// 表
type Sheet struct {
sheetName string
Row
}
// 创建表格
func CreateExcel(data Sheet) {
var file *xlsx.File
var sheet *xlsx.Sheet
var row *xlsx.Row
var cell *xlsx.Cell
var err error
//新建表格
file = xlsx.NewFile()
//设置当前页的名称
sheet, err = file.AddSheet(data.sheetName)
if err != nil {
fmt.Printf(err.Error())
}
//添加行
row = sheet.AddRow()
//设置行高
row.SetHeightCM(1.0)
//添加列,并设置内容
for _, v := range data.Cname {
cell = row.AddCell()
cell.Value = v
}
//保存文件
err = file.Save("F:/Go语言生成.xlsx")
if err != nil {
fmt.Printf(err.Error())
}
}
func main() {
//设置表头信息
sheet := Sheet{"小组信息",
Row{Cell{[]string{"姓名", "性别", "年龄", "成绩", "住址"}}}}
CreateExcel(sheet)
}
4.读取和操作表格
package main
import (
"fmt"
"github/tealeg/xlsx"
)
type Person struct {
Name string //微信昵称
Education string //学历
University string //高校
Industry string //行业
Workyear string //工作年限
Position string //职位
Salary string //薪资
Language string //编程语言
}
func Getxlsx() {
var per []Person
//读取Excel文件
file, err := xlsx.OpenFile("D:/Go语言工程师信息表.xlsx")
if err != nil {
fmt.Printf("open failed: %s\n", err)
return
}
//页
for _, sheet := range file.Sheets {
//行
for _, row := range sheet.Rows {
//列
var temp Person
//将Excel每一列文件读取放在字符串切片中
var str []string
for _, cell := range row.Cells {
str = append(str, cell.String())
}
//按照列顺序将数据存储在结构体中
temp.Name = str[0]
temp.Education = str[1]
temp.University = str[2]
temp.Industry = str[3]
temp.Workyear = str[4]
temp.Position = str[5]
temp.Salary = str[6]
temp.Language = str[7]
//将结构体放在结构体切片per中
per = append(per, temp)
}
}
fmt.Println(per)
}
func main() {
Getxlsx()
}