| | |
| | | package service |
| | | |
| | | import ( |
| | | "errors" |
| | | "github.com/shopspring/decimal" |
| | | "github.com/xuri/excelize/v2" |
| | | "strconv" |
| | |
| | | } |
| | | 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) |
| | | } |