增加导出为buffer,以便上传obs
parent
e9d6617baa
commit
370df7541a
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue