Autoindex
This commit is contained in:
16
.vscode/launch.json
vendored
Normal file
16
.vscode/launch.json
vendored
Normal file
@@ -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"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -37,32 +37,63 @@ func (r *Runner) ProcessExcel(path string) {
|
|||||||
f, err := excelize.OpenFile(path)
|
f, err := excelize.OpenFile(path)
|
||||||
checkErr(err)
|
checkErr(err)
|
||||||
|
|
||||||
rows, err := f.GetRows("Sheet1")
|
rows, err := f.GetRows("Export")
|
||||||
checkErr(err)
|
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{}
|
data := []Data{}
|
||||||
for i, row := range rows {
|
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
|
//Parse Rev
|
||||||
rev, err := strconv.ParseFloat(row[75], 64)
|
rev, err := strconv.ParseFloat(row[indexs["Revenue"]], 64)
|
||||||
checkErr(err)
|
checkErr(err)
|
||||||
new_data.Revenue = rev
|
new_data.Revenue = rev
|
||||||
|
|
||||||
//Parse Cost
|
//Parse Cost
|
||||||
cost, err := strconv.ParseFloat(row[16], 64)
|
cost, err := strconv.ParseFloat(row[indexs["Cost"]], 64)
|
||||||
checkErr(err)
|
checkErr(err)
|
||||||
new_data.Cost = cost
|
new_data.Cost = cost
|
||||||
|
|
||||||
//Parse Quantity
|
//Parse Quantity
|
||||||
qty, err := strconv.ParseInt(row[74], 10, 64)
|
qty, err := strconv.ParseInt(row[indexs["Quantity"]], 10, 64)
|
||||||
checkErr(err)
|
checkErr(err)
|
||||||
new_data.Quantity = qty
|
new_data.Quantity = qty
|
||||||
|
|
||||||
//Parse Time
|
//Parse Time
|
||||||
day, err := time.Parse("2006-01", row[27])
|
day, err := time.Parse("2006-01", row[indexs["Date"]])
|
||||||
checkErr(err)
|
checkErr(err)
|
||||||
new_data.Year = int64(day.Year())
|
new_data.Year = int64(day.Year())
|
||||||
new_data.Month = int64(day.Month())
|
new_data.Month = int64(day.Month())
|
||||||
|
|||||||
Reference in New Issue
Block a user