export.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package excel
  2. import (
  3. "bswas/utilities"
  4. "github.com/360EntSecGroup-Skylar/excelize/v2"
  5. )
  6. const SHEET = "Sheet1"
  7. func CreateFile(row []interface{},list [][]interface{}, mergeRow map[string]string, mergeColumn []string) (excel *excelize.File) {
  8. file := excelize.NewFile()
  9. streamWriter, err := file.NewStreamWriter(SHEET)
  10. if err != nil {
  11. utilities.WriteLog("/excel/export.go:14 文件生成失败!","ERROR")
  12. }
  13. cell, _ := excelize.CoordinatesToCellName(1, 1)
  14. if err := streamWriter.SetRow(cell, row); err != nil {
  15. utilities.WriteLog("/excel/export.go:18 写入表头失败!","ERROR")
  16. }
  17. for index := 0; index < len(list); index++ {
  18. cell, _ := excelize.CoordinatesToCellName(1, index+2)
  19. if err := streamWriter.SetRow(cell, list[index]); err != nil {
  20. utilities.WriteLog("/excel/export.go:23 数据写入文件失败!","ERROR")
  21. }
  22. }
  23. if mergeRow != nil && mergeColumn != nil {
  24. for start,end := range mergeRow {
  25. for i := 0;i<len(mergeColumn); i++ {
  26. err := file.MergeCell(SHEET,mergeColumn[i]+start,mergeColumn[i]+end)
  27. if err != nil {
  28. utilities.WriteLog("/excel/export.go:31 合并单元格失败!","ERROR")
  29. return
  30. }
  31. }
  32. }
  33. }
  34. if err := streamWriter.Flush(); err != nil {
  35. utilities.WriteLog("/excel/export.go:39 文件流关闭失败!","ERROR")
  36. }
  37. return file
  38. }