diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..866761c --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Package", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "main.go", + "args": ["-file","data.xlsx"] + } + ] +} \ No newline at end of file diff --git a/data.xlsx b/data.xlsx index 2078562..0e5f41b 100644 Binary files a/data.xlsx and b/data.xlsx differ diff --git a/runner/process_excel.go b/runner/process_excel.go index 5ffd594..16abdea 100644 --- a/runner/process_excel.go +++ b/runner/process_excel.go @@ -37,32 +37,63 @@ func (r *Runner) ProcessExcel(path string) { f, err := excelize.OpenFile(path) checkErr(err) - rows, err := f.GetRows("Sheet1") + rows, err := f.GetRows("Export") checkErr(err) - const offset = 3 + indexs := make(map[string]int) + var offset = 0 + for _, row := range rows { + offset += 1 + for i, header := range row { + switch header { + case "FiscalYearMonth": + indexs["Date"] = i + case "Level2": + indexs["Level2"] = i + case "Level3": + indexs["Level3"] = i + case "MaterialEntered": + indexs["SKU"] = i + case "Quantity": + indexs["Quantity"] = i + case "SalesRevenue": + indexs["Revenue"] = i + case "CostOfGoodsSold": + indexs["Cost"] = i + case "ProductDescription": + indexs["Description"] = i + } + } + if len(indexs) == 8 { + break + } + } + data := []Data{} for i, row := range rows { - if i >= offset { - new_data := Data{SKU: row[34], Level2: row[30], Level3: row[31], Description: row[45]} + if i >= offset { + if len(row[indexs["SKU"]]) == 0 { + break + } + new_data := Data{SKU: row[indexs["SKU"]], Level2: row[indexs["Level2"]], Level3: row[indexs["Level3"]], Description: row[indexs["Description"]]} //Parse Rev - rev, err := strconv.ParseFloat(row[75], 64) + rev, err := strconv.ParseFloat(row[indexs["Revenue"]], 64) checkErr(err) new_data.Revenue = rev //Parse Cost - cost, err := strconv.ParseFloat(row[16], 64) + cost, err := strconv.ParseFloat(row[indexs["Cost"]], 64) checkErr(err) new_data.Cost = cost //Parse Quantity - qty, err := strconv.ParseInt(row[74], 10, 64) + qty, err := strconv.ParseInt(row[indexs["Quantity"]], 10, 64) checkErr(err) new_data.Quantity = qty //Parse Time - day, err := time.Parse("2006-01", row[27]) + day, err := time.Parse("2006-01", row[indexs["Date"]]) checkErr(err) new_data.Year = int64(day.Year()) new_data.Month = int64(day.Month()) diff --git a/xl b/xl new file mode 100755 index 0000000..94e0813 Binary files /dev/null and b/xl differ