package utils import ( "errors" "io" "reflect" "github.com/astaxie/beego" "github.com/tealeg/xlsx" ) // TinyXLSXEngine 简版 xlsx 处理器 type TinyXLSXEngine struct { xlsxFile *xlsx.File sheet *xlsx.Sheet } // NewTinyXLSXEngine init func NewTinyXLSXEngine() (*TinyXLSXEngine, error) { file := xlsx.NewFile() sheet, err := file.AddSheet("sheet1") if err != nil { beego.Error("创建 xlsx sheet 失败: " + err.Error()) return nil, errors.New("创建 xlsx sheet 失败") } return &TinyXLSXEngine{ xlsxFile: file, sheet: sheet, }, nil } // InsertRow 新增行 func (t *TinyXLSXEngine) InsertRow() *xlsx.Row { return t.sheet.AddRow() } // SetCell 新增数据 func (t *TinyXLSXEngine) SetCell(row *xlsx.Row, v interface{}) { rv := reflect.ValueOf(v) if rv.Kind() == reflect.Slice { for i := 0; i < rv.Len(); i++ { row.AddCell().SetValue(rv.Index(i).Interface()) } } else { row.AddCell().SetValue(v) } } // Write 写数据 func (t *TinyXLSXEngine) Write(w io.Writer) error { return t.xlsxFile.Write(w) }