package main import ( "time" "os" "path/filepath" "log" "strings" "github.com/tealeg/xlsx" ) /* DataToExcel 数据导出excel DataToExcel(title string, pathTitle []string, data [][]interface{}) input: title string 表格名称 pathTitle []string pathTitle[0] 文件输出路径,例:`D:\workspace1\src\hdlg\log`,可为空,为空返回默认文件路径,不能不传 pathTitle[1,2,3 ...] 文件行首 例: pathTitle[`D:\workspace1\src\hdlg\log`,"col1","col2","col3"] data [][]interface{} 数据 例: array := [][]interface{}{ []interface{}{ "111", "1111", "11111", "111111", time.Now().Format("2006/01/02/15/04/05"), }, []interface{}{ "2222", "22222", "222222", "2222222", time.Now().Format("2006/01/02/15/04/05"), } } output: (string, error) success: { filePath: C:/Users/Administrator/AppData/Local/Temp/test.xlsx err: <nil> } Fail: { filePath: C:/Users/Administrator/AppData/Local/Temp/test.xlsx err: error } */ func DataToExcel(title string, pathTitle []string, data [][]interface{}) (string, error) { var filePath = "" var file *xlsx.File var sheet *xlsx.Sheet var err error // 如果有绝对路径存在绝对路径下;没有绝对路径,获取当前绝对路径,存在当前路径下 dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { log.Println(err) return filePath, err } path := strings.Replace(dir, "\\", "/", -1) if pathTitle[0] != "" { filePath = pathTitle[0] + `\` + title + `.xlsx` } else { filePath = path + `/` + title + `.xlsx` } // 设置样式 style := xlsx.NewStyle() style.Alignment.Horizontal, style.Alignment.Vertical = "Center", "Center" // 设置表名 file = xlsx.NewFile() sheet, err = file.AddSheet(title) if err != nil { log.Println(err) return filePath, err } // 表头 row := sheet.AddRow() row.SetHeightCM(1) for j := 1; j < len(pathTitle); j++ { cell := row.AddCell() cell.Value = pathTitle[j] cell.SetStyle(style) } // 插入数据 for i := 0; i < len(data); i++ { row := sheet.AddRow() for j := 0; j < len(data[i]); j++ { cell := row.Sheet.Cell(i+1, j) switch data[i][j].(type) { case float64: cell.SetFloat(data[i][j].(float64)) case time.Time: cell.SetDate(data[i][j].(time.Time)) case int: cell.SetInt(data[i][j].(int)) default: cell.SetString(data[i][j].(string)) } cell.SetStyle(style) } } //数据存储路径 if _, err := os.Stat(filePath); err == nil { err = os.Remove(filePath) if err != nil { log.Println(err) return filePath, err } } err = file.Save(filePath) if err != nil { log.Println(err) return filePath, err } return filePath, nil } func main() { array := [][]interface{}{ []interface{}{ "111", "1111", "11111", "111111", time.Now().Format("2006/01/02/15/04/05"), }, []interface{}{ "2222", "22222", "222222", "2222222", time.Now().Format("2006/01/02/15/04/05"), }, } DataToExcel("test",[]string{"./","r1","r2","r3","r4","r5"},array) }
数据导出为excel
猜你喜欢
转载自blog.csdn.net/q320036715/article/details/84898929
今日推荐
周排行