From 664cbc0b14e527c72dcea1e051264433e3af7dc7 Mon Sep 17 00:00:00 2001 From: zhangxin Date: Fri, 19 Mar 2021 16:43:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=BC=E5=87=BAexcel?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95SaveExcelFile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/utils.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/utils/utils.go b/utils/utils.go index d449559..14e2e61 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -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 } \ No newline at end of file