| | |
| | | |
| | | unitData, unitIndexMap := GetAllUnits() |
| | | // 自定义表头 |
| | | headers := []string{"产品", "产品类别", "单位成本", "总价值", "在库", "可用库存", "入库", "出库"} |
| | | headers := []interface{}{"产品", "产品类别", "单位成本", "总价值", |
| | | map[string][]string{"在库": unitData}, |
| | | map[string][]string{"可用库存": unitData}, |
| | | map[string][]string{"入库": unitData}, |
| | | map[string][]string{"出库": unitData}} |
| | | |
| | | // 设置表头 |
| | | for i, header := range headers { |
| | | cell := getColumnAlphabet(i) + "1" |
| | | f.SetCellValue("Sheet1", cell, header) |
| | | } |
| | | |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(1)+"1", "产品") |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(2)+"1", "产品类别") |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(3)+"1", "单位成本") |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(4)+"1", "总价值") |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(5)+"1", "在库") |
| | | f.MergeCell("Sheet1", getColumnAlphabet(5)+"1", getColumnAlphabet(7)+"1") // 合并单元格 |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(8)+"1", "可用库存") |
| | | f.MergeCell("Sheet1", getColumnAlphabet(8)+"1", getColumnAlphabet(11)+"1") // 合并单元格 |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(12)+"1", "入库") |
| | | f.MergeCell("Sheet1", getColumnAlphabet(12)+"1", getColumnAlphabet(15)+"1") // 合并单元格 |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(16)+"1", "出库") |
| | | f.MergeCell("Sheet1", getColumnAlphabet(16)+"1", getColumnAlphabet(19)+"1") // 合并单元格 |
| | | |
| | | for i, header := range unitData { |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i+4)+"2", header) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i+8)+"2", header) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i+12)+"2", header) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i+16)+"2", header) |
| | | } |
| | | |
| | | // 设置表头样式 |
| | | style := &excelize.Style{ |
| | | Border: nil, |
| | | Fill: excelize.Fill{ |
| | | Type: "pattern", |
| | | Pattern: 1, |
| | | Shading: 0, |
| | | }, |
| | | Font: &excelize.Font{ |
| | | Bold: true, |
| | | }, |
| | | Alignment: &excelize.Alignment{ |
| | | Horizontal: "center", |
| | | }, |
| | | } |
| | | titleStyle, err := f.NewStyle(style) |
| | | lastColumnNumber, err := SetExcelHeaders(headers, f) |
| | | if err != nil { |
| | | return |
| | | } |
| | | |
| | | lastColumn := getColumnAlphabet(19) |
| | | titleStyle, err := SetHeaderStyle(f) |
| | | if err != nil { |
| | | return |
| | | } |
| | | |
| | | lastColumn := getColumnAlphabet(lastColumnNumber) |
| | | f.SetCellStyle("Sheet1", "A1", lastColumn+"2", titleStyle) |
| | | // 设置列宽 |
| | | f.SetColWidth("Sheet1", "A", "D", 30) |
| | | f.SetColWidth("Sheet1", "E", lastColumn, 15) |
| | | |
| | | for i := 1; i <= 4; i++ { |
| | | column := getColumnAlphabet(i) |
| | | f.MergeCell("Sheet1", column+"1", column+"2") // 合并单元格 |
| | | } |
| | | |
| | | for i, v := range dataList { |
| | | column := strconv.Itoa(i + 3) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(0)+column, v.ProductName) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(1)+column, v.ProductType) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(2)+column, v.Cost) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(3)+column, v.Value) |
| | | rowNumber := i + 3 |
| | | column := strconv.Itoa(rowNumber) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(1)+column, v.ProductName) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(2)+column, v.ProductType) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(3)+column, v.Cost) |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(4)+column, v.Value) |
| | | |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(4)+column, v.Amount) |
| | | v.AmountMoreUnits = append(v.AmountMoreUnits, models.UnitItems{Amount: v.Amount, Unit: v.Unit}) |
| | | FillMoreUnitToExcel(v.AmountMoreUnits, 5, i+3, unitIndexMap, f) |
| | | FillMoreUnitToExcel(v.AmountMoreUnits, 5, rowNumber, unitIndexMap, f) |
| | | |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(8)+column, v.AvailableNumber) |
| | | v.AvailableNumberMoreUnits = append(v.AvailableNumberMoreUnits, models.UnitItems{Amount: v.AvailableNumber, Unit: v.Unit}) |
| | | FillMoreUnitToExcel(v.AvailableNumberMoreUnits, 9, i+3, unitIndexMap, f) |
| | | FillMoreUnitToExcel(v.AvailableNumberMoreUnits, 5+len(unitData), rowNumber, unitIndexMap, f) |
| | | |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(12)+column, v.In) |
| | | v.InMoreUnits = append(v.InMoreUnits, models.UnitItems{Amount: v.In, Unit: v.Unit}) |
| | | FillMoreUnitToExcel(v.InMoreUnits, 13, i+3, unitIndexMap, f) |
| | | FillMoreUnitToExcel(v.InMoreUnits, 5+len(unitData)*2, rowNumber, unitIndexMap, f) |
| | | |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(16)+column, v.Out) |
| | | v.OutMoreUnits = append(v.OutMoreUnits, models.UnitItems{Amount: v.Out, Unit: v.Unit}) |
| | | FillMoreUnitToExcel(v.OutMoreUnits, 17, i+3, unitIndexMap, f) |
| | | FillMoreUnitToExcel(v.OutMoreUnits, 5+len(unitData)*3, rowNumber, unitIndexMap, f) |
| | | } |
| | | |
| | | fileName = fmt.Sprintf("库存报表%s.xlsx", time.Now().Format("2006-01-02-1504")) |