增加导出为buffer,以便上传obs

main
lj-wsdj 2024-07-03 10:12:18 +08:00
parent e9d6617baa
commit 370df7541a
2 changed files with 33 additions and 2 deletions

View File

@ -1,7 +1,9 @@
package export package export
import ( import (
"bytes"
"fmt" "fmt"
"io"
"reflect" "reflect"
"strconv" "strconv"
"strings" "strings"
@ -47,6 +49,20 @@ func (e *Exporter) newSheet() error {
} }
func (e *Exporter) Export(sheetIndex int) error { func (e *Exporter) Export(sheetIndex int) error {
if err := e.export(sheetIndex); err != nil {
return err
}
return e.Save()
}
func (e *Exporter) ExportBuffer(sheetIndex int) (io.Writer, error) {
if err := e.export(sheetIndex); err != nil {
return nil, err
}
return e.SaveBuffer()
}
func (e *Exporter) export(sheetIndex int) error {
if len(e.Sheets) == 0 { if len(e.Sheets) == 0 {
return fmt.Errorf("excel file has no sheet") return fmt.Errorf("excel file has no sheet")
} }
@ -76,7 +92,7 @@ func (e *Exporter) Export(sheetIndex int) error {
default: default:
return fmt.Errorf("data must be slice or struct") return fmt.Errorf("data must be slice or struct")
} }
return e.Save() return nil
} }
func (e *Exporter) dealElement(sheet string, data reflect.Value) { func (e *Exporter) dealElement(sheet string, data reflect.Value) {
@ -200,3 +216,13 @@ func (e *Exporter) Save() error {
defer e.xlsx.Close() defer e.xlsx.Close()
return e.xlsx.SaveAs(fmt.Sprintf("%s/%s", e.Path, e.File)) return e.xlsx.SaveAs(fmt.Sprintf("%s/%s", e.Path, e.File))
} }
func (e *Exporter) SaveBuffer() (io.Writer, error) {
defer e.xlsx.Close()
var buffer bytes.Buffer
err := e.xlsx.Write(&buffer)
if err != nil {
return nil, err
}
return &buffer, nil
}

View File

@ -149,5 +149,10 @@ func TestMain(t *testing.T) {
exporter.Titles = title exporter.Titles = title
exporter.File = "test1.xlsx" exporter.File = "test1.xlsx"
exporter.Path = "./" exporter.Path = "./"
exporter.Export(0) // exporter.Export(0)
buffer, err := exporter.ExportBuffer(0)
if err != nil {
fmt.Println(err)
}
fmt.Println(buffer)
} }