package utils import ( "github.com/xuri/excelize/v2" ) // func Export(widths []int) (bool, error) { // f := excelize.NewFile() // defer func() { // _ = f.Close() // }() // // // 创建一个工作表 // index, err := f.NewSheet("Sheet1") // if err != nil { // return false, err // } // // // 设置工作簿的默认工作表 // f.SetActiveSheet(index) // // // 单元格对齐样式 // alignment := &excelize.Alignment{ // Horizontal: "center", // Vertical: "center", // } // // // 单元格颜色填充样式 // fill := excelize.Fill{ // Type: "pattern", // Pattern: 1, // Color: []string{"#c9daf8"}, // Shading: 0, // } // // // 第一行的左、右、下边框 // border := []excelize.Border{ // { // Type: "left,right,bottom", // Color: "", // Style: 1, // }, // } // // // 工作表样式 // style, err := f.NewStyle( // &excelize.Style{ // Fill: fill, // Alignment: alignment, // Border: border, // }, // ) // if err != nil { // return false, err // } // // // 依次设置每一列的列宽 // widths = []int{18, 18, 18, 18, 18, 20, 23, 46, 18, 30, 30, 18, 18, 30, 18, 30} // for col, width := range widths { // // 获取列名 // colName, err := excelize.ColumnNumberToName(col + 1) // if err != nil { // return false, err // } // // // 设置列宽 // err = f.SetColWidth("Sheet1", colName, colName, float64(width)) // if err != nil { // return false, err // } // // // 设置列背景颜色 // err = f.SetCellStyle("Sheet1", colName+"1", colName+"1", style) // if err != nil { // return false, err // } // } // // // 设置行高 // err = f.SetRowStyle("Sheet1", 1, 10, style) // if err != nil { // return false, err // } // // if err := f.SaveAs("output.xlsx"); err != nil { // return false, err // } // // return true, nil // } // CellData 列内容 type CellData struct { Value interface{} // 值 CellType string // 类型 NumberFmt string // 格式化方式 ColWidth int // 列宽 } func Export(header []CellData) ([]byte, error) { f := excelize.NewFile() defer func() { _ = f.Close() }() // 创建一个工作表 index, err := f.NewSheet("Sheet1") if err != nil { return nil, err } // 设置工作簿的默认工作表 f.SetActiveSheet(index) // 设置工作表默认字体 err = f.SetDefaultFont("宋体") if err != nil { return nil, err } // 统一单元格对齐样式 alignment := &excelize.Alignment{ Horizontal: "center", Vertical: "center", } // 设置行高 35-第一行 err = f.SetRowHeight("Sheet1", 1, 35) if err != nil { return nil, err } // 处理工作表表头 for c, cell := range header { // 获取列名 colName, err := excelize.ColumnNumberToName(c + 1) if err != nil { return nil, err } // 添加单元格的值 err = f.SetCellValue("Sheet1", colName+"1", cell.Value) if err != nil { return nil, err } // 单元格颜色填充样式 fill := excelize.Fill{ Type: "pattern", Pattern: 1, Color: []string{"#c9daf8"}, Shading: 0, } // 第一行的左、右、下边框 border := []excelize.Border{ { Type: "left", Color: "#000000", Style: 1, }, { Type: "right", Color: "#000000", Style: 1, }, { Type: "bottom", Color: "#000000", Style: 1, }, } // 设置单元格值类型和格式 style, _ := f.NewStyle(&excelize.Style{ Alignment: alignment, // 字体居中 Fill: fill, // 背景颜色 Border: border, // 边框 }) err = f.SetCellStyle("Sheet1", colName+"1", colName+"1", style) if err != nil { return nil, err } } // 处理工作表设置 for c, cell := range header { // 获取列名 colName, err := excelize.ColumnNumberToName(c + 1) if err != nil { return nil, err } // 设置列宽 err = f.SetColWidth("Sheet1", colName, colName, float64(cell.ColWidth)) if err != nil { return nil, err } } // 保存文件 if err := f.SaveAs("output.xlsx"); err != nil { return nil, err } // buffer, err := f.WriteToBuffer() // if err != nil { // return nil, err // } // // buffer.Bytes() return nil, nil }