| | |
| | | unitData, unitIndexMap := GetAllUnits() |
| | | // 自定义表头 |
| | | headers := []interface{}{"位置", "产品", "产品类别", map[string][]string{"在库数量": unitData}, "价值"} |
| | | |
| | | // 设置表头 |
| | | i := 1 |
| | | for _, h := range headers { |
| | | if v, ok := h.(string); ok { |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", v) |
| | | i++ |
| | | } else if childHeaders, ok := h.(map[string][]string); ok { |
| | | for title, list := range childHeaders { |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", title) |
| | | err = f.MergeCell("Sheet1", getColumnAlphabet(i)+"1", getColumnAlphabet(i-1+len(list))+"1") // 合并单元格 |
| | | for _, t := range list { |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i)+"2", t) |
| | | i++ |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 设置表头样式 |
| | | 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 |
| | | return "", err |
| | | } |
| | | f.MergeCell("Sheet1", "A1", "A2") // 合并单元格 |
| | | f.MergeCell("Sheet1", "B1", "B2") // 合并单元格 |
| | | f.MergeCell("Sheet1", "C1", "C2") // 合并单元格 |
| | | |
| | | titleStyle, err := SetHeaderStyle(f) |
| | | if err != nil { |
| | | return "", err |
| | | } |
| | | |
| | | lastColumn := getColumnAlphabet(i) |
| | | lastColumn := getColumnAlphabet(lastColumnNumber) |
| | | f.SetCellStyle("Sheet1", "A1", lastColumn+"2", titleStyle) |
| | | // 设置列宽 |
| | | f.SetColWidth("Sheet1", "A", "C", 30) |
| | |
| | | unitData, unitIndexMap := GetAllUnits() |
| | | unitLen := len(unitData) |
| | | |
| | | // 设置表头 |
| | | f.SetCellValue("Sheet1", "A1", "产品编码") |
| | | f.MergeCell("Sheet1", "A1", "A2") // 合并单元格 |
| | | f.SetCellValue("Sheet1", "B1", "产品名称") |
| | | f.MergeCell("Sheet1", "B1", "B2") // 合并单元格 |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(3)+"1", "期初库存") |
| | | f.MergeCell("Sheet1", getColumnAlphabet(3)+"1", getColumnAlphabet(2+unitLen)+"1") // 合并单元格 |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(3+unitLen)+"1", "本月入库") |
| | | f.MergeCell("Sheet1", getColumnAlphabet(3+unitLen)+"1", getColumnAlphabet(2+unitLen*2)+"1") // 合并单元格 |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(3+unitLen*2)+"1", "本月出库") |
| | | f.MergeCell("Sheet1", getColumnAlphabet(3+unitLen*2)+"1", getColumnAlphabet(2+unitLen*3)+"1") // 合并单元格 |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(3+unitLen*3)+"1", "期末库存") |
| | | f.MergeCell("Sheet1", getColumnAlphabet(3+unitLen*3)+"1", getColumnAlphabet(2+unitLen*4)+"1") // 合并单元格 |
| | | |
| | | for j := 0; j < 4; j++ { //给期初库存, 本月入库, 本月出库, 期末库存赋值多单位表头 |
| | | for i, header := range unitData { |
| | | cell := getColumnAlphabet(i+3+unitLen*j) + "2" |
| | | f.SetCellValue("Sheet1", cell, 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) |
| | | // 自定义表头 |
| | | headers := []interface{}{"产品编码", "产品名称", map[string][]string{"期初库存": unitData}, map[string][]string{"本月入库": unitData}, map[string][]string{"本月出库": unitData}, map[string][]string{"期末库存": unitData}} |
| | | lastColumnNumber, err := SetExcelHeaders(headers, f) |
| | | if err != nil { |
| | | return |
| | | return "", err |
| | | } |
| | | f.SetCellStyle("Sheet1", "A1", getColumnAlphabet(2+unitLen*4)+"2", titleStyle) |
| | | |
| | | f.MergeCell("Sheet1", "A1", "A2") // 合并单元格 |
| | | f.MergeCell("Sheet1", "B1", "B2") // 合并单元格 |
| | | |
| | | titleStyle, err := SetHeaderStyle(f) |
| | | if err != nil { |
| | | return "", err |
| | | } |
| | | |
| | | lastColumn := getColumnAlphabet(lastColumnNumber) |
| | | f.SetCellStyle("Sheet1", "A1", lastColumn+"2", titleStyle) |
| | | // 设置列宽 |
| | | f.SetColWidth("Sheet1", "A", "B", 30) |
| | | f.SetColWidth("Sheet1", "C", getColumnAlphabet(2+unitLen*4), 15) |
| | | f.SetColWidth("Sheet1", "C", lastColumn, 15) |
| | | |
| | | for i, v := range dataList { |
| | | row := strconv.Itoa(i + 3) |
| | |
| | | } |
| | | return |
| | | } |
| | | |
| | | func SetExcelHeaders(headers []interface{}, f *excelize.File) (lastColumnNumber int, err error) { |
| | | // 设置表头 |
| | | i := 1 |
| | | for _, h := range headers { |
| | | if v, ok := h.(string); ok { |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", v) |
| | | i++ |
| | | } else if childHeaders, ok := h.(map[string][]string); ok { |
| | | for title, list := range childHeaders { |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", title) |
| | | err = f.MergeCell("Sheet1", getColumnAlphabet(i)+"1", getColumnAlphabet(i-1+len(list))+"1") // 合并单元格 |
| | | if err != nil { |
| | | return 1, err |
| | | } |
| | | for _, t := range list { |
| | | f.SetCellValue("Sheet1", getColumnAlphabet(i)+"2", t) |
| | | i++ |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return i, nil |
| | | } |