1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| package service
|
| import (
| "errors"
| "github.com/shopspring/decimal"
| "github.com/xuri/excelize/v2"
| "strconv"
| "wms/models"
| )
|
| func CreateMoreUnit(amount decimal.Decimal, units []models.UnitItems) []models.UnitItems {
| moreValueArr := make([]models.UnitItems, 0, len(units))
| for _, unitItem := range units {
| moreValueArr = append(moreValueArr, models.UnitItems{
| Amount: amount.Mul(unitItem.Amount),
| Unit: unitItem.Unit,
| Floating: unitItem.Floating,
| })
| }
| return moreValueArr
| }
|
| func FillMoreUnitToExcel(amount decimal.Decimal, units []models.UnitItems, startIndex int, column int, f *excelize.File) {
| columnStr := strconv.Itoa(column)
| for _, v := range units {
| switch v.Unit {
| case "匹":
| f.SetCellValue("Sheet1", getColumnAlphabet(startIndex)+columnStr, v.Amount.Mul(amount))
| case "米":
| f.SetCellValue("Sheet1", getColumnAlphabet(startIndex+1)+columnStr, v.Amount.Mul(amount))
| case "重量":
| f.SetCellValue("Sheet1", getColumnAlphabet(startIndex+2)+columnStr, v.Amount.Mul(amount))
| }
| }
| return
| }
|
| func SetExcelHeader(headers []interface{}, f *excelize.File) (err error) {
| // 设置表头
| var i int
| for _, h := range headers {
| if v, ok := h.(string); ok {
| err = f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", v)
| if err != nil {
| return
| }
| i++
| } else if childHeaders, ok := h.(map[string][]string); ok {
| for title, list := range childHeaders {
| err = f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", title)
| if err != nil {
| return err
| }
| err = f.MergeCell("Sheet1", getColumnAlphabet(i)+"1", getColumnAlphabet(i-1+len(list))+"1") // 合并单元格
| for _, t := range list {
| err = f.SetCellValue("Sheet1", getColumnAlphabet(i)+"2", t)
| if err != nil {
| return err
| }
| i++
| }
| }
| } else {
| return errors.New("unsupported header value")
| }
| }
| return nil
| }
|
| func SetHeaderStyle(f *excelize.File) (styleInt int, err error) {
| // 设置表头样式
| style := &excelize.Style{
| Border: nil,
| Fill: excelize.Fill{
| Type: "pattern",
| Pattern: 1,
| Shading: 0,
| },
| Font: &excelize.Font{
| Bold: true,
| },
| Alignment: &excelize.Alignment{
| Horizontal: "center",
| },
| }
| return f.NewStyle(style)
| }
|
|