交互型网站难做吗,公司网站别人做的怎么签合同,滨海做网站哪家好,推广网站设计推广方案经常会遇到需要导出数据报表的需求#xff0c;除了可以通过 encoding/csv 导出 CSV 以外#xff0c;还可以使用 https://github.com/qax-os/excelize 导出 xlsx 等格式的 excel#xff0c;下面封装了一个方法#xff0c;支持多 sheet 的 excel 数据生成#xff0c;导出按需…经常会遇到需要导出数据报表的需求除了可以通过 encoding/csv 导出 CSV 以外还可以使用 https://github.com/qax-os/excelize 导出 xlsx 等格式的 excel下面封装了一个方法支持多 sheet 的 excel 数据生成导出按需在接口实现层添加 f.SaveAs(xxx.xlsx) 即可
package excelimport (fmtgithub.com/xuri/excelize/v2
)type SheetData struct {SheetName stringHeaders []stringRows [][]interface{}
}// GenerateExcelBySheets 生成 excel 表格
func GenerateExcelBySheets(sheets []SheetData) (*excelize.File, error) {f : excelize.NewFile()for _, sheet : range sheets {if _, err : f.NewSheet(sheet.SheetName); err ! nil {return nil, err}for i, header : range sheet.Headers {if err : f.SetCellValue(sheet.SheetName, GetCellName(i, 1), header); err ! nil {return nil, err}}baseIndex : 2if len(sheet.Headers) 0 {baseIndex 1}for i, row : range sheet.Rows {for j, val : range row {if err : f.SetCellValue(sheet.SheetName, GetCellName(j, baseIndexi), val); err ! nil {return nil, err}}}}if len(sheets) 0 {f.SetActiveSheet(0)}return f, nil
}// GetColumnName 获取列名 A-Z, AA-ZZ, AAA-ZZZ
func GetColumnName(col int) string {if col 26 {return string(rune(A col))}return GetColumnName(col/26-1) GetColumnName(col%26)
}// GetCellName 获取单元格名称 A1, B2, AA1, AB1
func GetCellName(col, row int) string {return fmt.Sprintf(%s%d, GetColumnName(col), row)
}