123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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
- }
|