完整代碼:https://github.com/tangfc/tealeg-xlsx
tealeg-xlsx文檔地址:https://godoc.org/github.com/tealeg/xlsx
1.導出數據到EXCEL
package dbops
import (
"github.com/tealeg/xlsx"
"go-test/excel/defs"
"go-test/excel/comm"
"github.com/labstack/gommon/log"
"strconv"
)
var (
file *xlsx.File
sheet *xlsx.Sheet
row *xlsx.Row
cell *xlsx.Cell
downloadData []*defs.MemberInfo
err error
)
// 下載Excel
func DownlaodExcel(filePath string, heads []string, data []*defs.MemberInfo) error {
// 創建路徑
err = comm.CreateFilePath(filePath)
if err != nil {
log.Printf("%s", err.Error())
return err
}
// 創建文件
file = xlsx.NewFile()
// 添加新工作表
sheet, err = file.AddSheet("Sheet1")
if err != nil {
return err
}
// 向工作表中添加新行
row = sheet.AddRow()
// 頭部寫入
for _, head := range heads {
cell = row.AddCell()
cell.Value = head
}
// 設置單元格樣式
sheet.SetColWidth(5, 5, 60) // 設置單元格寬度 0-A 1-B 2-C
// 主體寫入數據
for _, val := range data {
row = sheet.AddRow()
row.AddCell().Value = strconv.Itoa(val.Id) // 該行單元格寫入數據
row.AddCell().Value = val.Nickname
row.AddCell().Value = val.Username
row.AddCell().Value = val.Realname
row.AddCell().Value = val.Sex
row.AddCell().Value = val.Signature
}
// 在提供的路徑中將文件保存到xlsx文件
err = file.Save(filePath)
if err != nil {
return err
}
return nil
}
2.讀取EXCEL數據
package dbops
import (
"github.com/tealeg/xlsx"
)
// 讀取EXCEL
func ReadExcel(filePath string) (data map[string][][]string, err error) {
data = make(map[string][][]string)
xlFile, err := xlsx.OpenFile(filePath) // 打開文件
if err != nil {
return
}
for _, sheet := range xlFile.Sheets { // 循環打開工作簿
var sheetInfo [][]string
for _, row := range sheet.Rows { // 循環讀取行
var info []string
for _, cell := range row.Cells { // 循環讀取單元格
info = append(info, cell.String())
}
sheetInfo = append(sheetInfo, info)
}
data[sheet.Name] = sheetInfo
}
return
}