1、導(dǎo)入xlsx直接生成Excel:
go get github.com/tealeg/xlsx
- 如果在get包時(shí)長(zhǎng)時(shí)間沒(méi)有反應(yīng)缀遍,那可以直接從我的百度云下載 xlsx 包慕匠,之后直接放在你項(xiàng)目的 github.com 文件夾下就可以了
https://pan.baidu.com/s/1T-RsQ6lyP2bw330tD1svgQ
package main
import "github.com/tealeg/xlsx"
func main() {
file := xlsx.NewFile()
sheet,err := file.AddSheet("sheet1")
if err != nil {
panic(err)
}
row := sheet.AddRow()
row.SetHeightCM(1) //設(shè)置每行的高度
cell := row.AddCell()
cell.Value = "haha"
cell = row.AddCell()
cell.Value = "1234567"
err = file.Save("file.xlsx")
if err != nil {
panic(err)
}
}
-
效果如下:
image.png
2、簡(jiǎn)單封裝:
package xlsxtool
import (
"github.com/tealeg/xlsx"
"errors"
)
type XlsxRow struct {
Row *xlsx.Row
Data []string
}
func NewRow(row *xlsx.Row,data []string) *XlsxRow {
return &XlsxRow{
Row:row,
Data:data,
}
}
func (row *XlsxRow) SetRowTitle() error {
return generateRow(row.Row,row.Data)
}
func (row *XlsxRow) GenerateRow() error {
return generateRow(row.Row,row.Data)
}
func generateRow(row *xlsx.Row,rowStr []string) error {
if rowStr == nil {
return errors.New("no data to generate xlsx!")
}
for _,v := range rowStr {
cell := row.AddCell()
cell.SetString(v)
}
return nil
}
- 調(diào)用:
package peopleExcel
import (
"test/mode"
"test/xlsxtool"
"fmt"
"github.com/tealeg/xlsx"
"time"
)
func GeneratePeopleExcel(peo []mode.Person) (error, bool) {
t1 := time.Now()
defer func() {
fmt.Println(time.Since(t1))
}()
t := make([]string, 0)
t = append(t, "姓名")
t = append(t, "性別")
t = append(t, "年齡")
t = append(t, "電話(huà)")
t = append(t, "婚配")
t = append(t, "現(xiàn)居地")
file := xlsx.NewFile()
sheet, err := file.AddSheet("sheet")
if err != nil {
return err, false
}
titleRow := sheet.AddRow()
xlsRow := xlsxtool.NewRow(titleRow, t)
err = xlsRow.SetRowTitle()
if err != nil {
return err, false
}
for _, v := range peo {
currentRow := sheet.AddRow()
tmp := make([]string, 0)
tmp = append(tmp, v.Name)
tmp = append(tmp, v.Gender)
tmp = append(tmp, v.Age)
tmp = append(tmp, v.Tel)
tmp = append(tmp, v.Marry)
tmp = append(tmp, v.Address)
xlsRow := xlsxtool.NewRow(currentRow, tmp)
err := xlsRow.GenerateRow()
if err != nil {
return err, false
}
}
err = file.Save("./Excel/人員信息.xlsx")
if err != nil {
return err, false
}
return nil, true
}
-
效果如下:
image.png -
寫(xiě)完封裝后域醇,我仔細(xì)想了想,其實(shí)不用封裝蓉媳,可以直接遍歷譬挚,封裝之后比較簡(jiǎn)潔易讀!(此處應(yīng)該有個(gè)傻笑的表情 ^ - ^)酪呻。
image.png