zhangqian
2024-07-31 3bbe212120c1199e574087f63afe8f384ffe16f5
抽离设置表头为公共方法
3个文件已修改
127 ■■■■■ 已修改文件
service/location_forms.go 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/month_forms.go 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/more_units.go 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/location_forms.go
@@ -104,46 +104,20 @@
    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)
service/month_forms.go
@@ -70,49 +70,26 @@
    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)
service/more_units.go
@@ -140,3 +140,27 @@
    }
    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
}