package excel import ( "encoding/json" "errors" "eta/eta_api/models/data_manage/excel" excelServices "eta/eta_api/services/excel" "fmt" ) // GetCustomAnalysisExcelData 获取自定义分析的表格data数据 func GetCustomAnalysisExcelData(excelInfo *excel.ExcelInfo) (luckySheet excelServices.LuckySheet, err error, errMsg string) { // 查找当前excel的sheet列表 sheetList, err := excel.GetAllSheetList(excelInfo.ExcelInfoId) if err != nil { errMsg = "保存失败" err = errors.New("查找当前excel的sheet列表失败,Err:" + err.Error()) return } currSheetMap := make(map[string]string) for _, sheet := range sheetList { currSheetMap[sheet.SheetName] = sheet.SheetName } sheetCellDataMapList := make(map[int][]excelServices.LuckySheetCellData) // 通过excel的id获取各个sheet的单元格数据map { dataList, tmpErr := excel.GetSheetDataListByExcelInfoId(excelInfo.ExcelInfoId) if tmpErr != nil { err = tmpErr return } for _, cellData := range dataList { sheetDataList, ok := sheetCellDataMapList[cellData.ExcelSheetId] if !ok { sheetDataList = make([]excelServices.LuckySheetCellData, 0) } tmpSheetDataList := make([]excelServices.LuckySheetCellData, 0) err = json.Unmarshal([]byte(cellData.Data), &tmpSheetDataList) if err != nil { return } sheetCellDataMapList[cellData.ExcelSheetId] = append(sheetDataList, tmpSheetDataList...) } } // 转成luckySheet的数据格式 luckySheet = excelServices.LuckySheet{ SheetList: make([]excelServices.LuckySheetData, 0), } for _, sheet := range sheetList { var luckySheetDataConfig excelServices.LuckySheetDataConfig err = json.Unmarshal([]byte(sheet.Config), &luckySheetDataConfig) if err != nil { return } tmpLuckySheetDataInfo := excelServices.LuckySheetData{ Name: sheet.SheetName, Index: sheet.Sort, CellData: sheetCellDataMapList[sheet.ExcelSheetId], Config: luckySheetDataConfig, } luckySheet.SheetList = append(luckySheet.SheetList, tmpLuckySheetDataInfo) } return } // GenerateExcelCustomAnalysisExcel 根据自定义分析的表格data数据生成excel func GenerateExcelCustomAnalysisExcel(excelInfo *excel.ExcelInfo) (downloadFilePath string, err error, errMsg string) { luckySheet, err, errMsg := GetCustomAnalysisExcelData(excelInfo) if err != nil { return } downloadFilePath, err = luckySheet.ToExcel() fmt.Println("生成的文件地址:", downloadFilePath) return }