增加导出为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
import (
"bytes"
"fmt"
"io"
"reflect"
"strconv"
"strings"
@ -47,6 +49,20 @@ func (e *Exporter) newSheet() 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 {
return fmt.Errorf("excel file has no sheet")
}
@ -76,7 +92,7 @@ func (e *Exporter) Export(sheetIndex int) error {
default:
return fmt.Errorf("data must be slice or struct")
}
return e.Save()
return nil
}
func (e *Exporter) dealElement(sheet string, data reflect.Value) {
@ -200,3 +216,13 @@ func (e *Exporter) Save() error {
defer e.xlsx.Close()
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.File = "test1.xlsx"
exporter.Path = "./"
exporter.Export(0)
// exporter.Export(0)
buffer, err := exporter.ExportBuffer(0)
if err != nil {
fmt.Println(err)
}
fmt.Println(buffer)
}