Browse Source

添加导出excel的方法SaveExcelFile

pull/15/head
zhangxin 4 years ago
parent
commit
664cbc0b14
1 changed files with 43 additions and 0 deletions
  1. +43
    -0
      utils/utils.go

+ 43
- 0
utils/utils.go View File

@ -3,6 +3,7 @@ package utils
import (
"errors"
"fmt"
"github.com/360EntSecGroup-Skylar/excelize/v2"
"github.com/lianggx6/goutf16"
"io"
"math/rand"
@ -386,4 +387,46 @@ func FileExist(file string) bool {
}
return true
}
func SaveExcelFile(list []interface{}, sheetName string, prefixFilename string) (filepath string, err error) {
file := excelize.NewFile()
streamWriter, err := file.NewStreamWriter(sheetName)
if err != nil {
return "", err
}
for index, item := range list {
if index == 0 {
typeOfS := reflect.TypeOf(item)
row := make([]interface{}, typeOfS.NumField())
for i := 0; i < typeOfS.NumField(); i++ {
row[i] = typeOfS.Field(i).Name
}
cell, _:= excelize.CoordinatesToCellName(1, 1)
if err := streamWriter.SetRow(cell, row); err != nil {
fmt.Println(err)
}
}
typeOfS := reflect.ValueOf(item)
row := make([]interface{}, typeOfS.NumField())
for i := 0; i < typeOfS.NumField(); i++ {
row[i] = typeOfS.Field(i)
}
cell, _:= excelize.CoordinatesToCellName(1, index+2)
if err := streamWriter.SetRow(cell, row); err != nil {
fmt.Println(err)
}
}
if err := streamWriter.Flush(); err != nil {
fmt.Println(err)
}
filename := MakeOrderSn(prefixFilename) + ".xlsx"
dirname, err := GetCurrentPath("web/public/uploadxlsx")
if err != nil {
return "", err
}
return dirname + "/" + filename, nil
}

Loading…
Cancel
Save