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