package myutils import ( "feinail/app/config" "github.com/jinzhu/gorm" "github.com/tealeg/xlsx" "strconv" "time" ) func ExcelExportData(db *gorm.DB, config config.Config, header []string, data []map[string]interface{}, sheetName string) string { timeStr:=time.Now().Format("2006-01-02 15:04:05") var file *xlsx.File var sheet *xlsx.Sheet var row *xlsx.Row var cell *xlsx.Cell style := &xlsx.Style{} style.Fill = *xlsx.NewFill("solid", "EFEFDE", "EFEFDE") style.Border = xlsx.Border{RightColor: "FF"} file = xlsx.NewFile() sheet, _ = file.AddSheet(sheetName) row = sheet.AddRow() for i := 0; i < len(header); i++ { //looping from 0 to the length of the array cell = row.AddCell() cell.Value = header[i] cell.SetStyle(style) } for _, obj := range data { row = sheet.AddRow() for i := 0;i <len(header);i++{ switch obj[header[i]].(type) { case string: obj[header[i]] = obj[header[i]] break case int: obj[header[i]] = strconv.Itoa(obj[header[i]].(int)) break case float64: obj[header[i]] = strconv.FormatFloat(obj[header[i]].(float64), 'E', -1, 64) break } cell = row.AddCell() cell.Value = obj[header[i]].(string) } } url := config.ExcelPath+timeStr+".xlsx" file.Save(url) return url }