From 2be4d45c6270d2b8c3e80d8bd6a10cba71b5052a Mon Sep 17 00:00:00 2001 From: lizheao Date: Mon, 8 Oct 2018 22:17:33 +0800 Subject: feat: add new function and refactor writeto action * add new exported function to get Excel file content buffer * refactor the WriteTo function --- file.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'file.go') diff --git a/file.go b/file.go index 5bfed39..1f69005 100644 --- a/file.go +++ b/file.go @@ -76,6 +76,15 @@ func (f *File) Write(w io.Writer) error { // WriteTo implements io.WriterTo to write the file. func (f *File) WriteTo(w io.Writer) (int64, error) { + buf, err := f.WriteToBuffer() + if err != nil { + return 0, err + } + return buf.WriteTo(w) +} + +// WriteToBuffer provides a function to get bytes.Buffer from the saved file. +func (f *File) WriteToBuffer() (*bytes.Buffer, error) { buf := new(bytes.Buffer) zw := zip.NewWriter(buf) f.contentTypesWriter() @@ -86,17 +95,12 @@ func (f *File) WriteTo(w io.Writer) (int64, error) { for path, content := range f.XLSX { fi, err := zw.Create(path) if err != nil { - return 0, err + return buf, err } _, err = fi.Write(content) if err != nil { - return 0, err + return buf, err } } - err := zw.Close() - if err != nil { - return 0, err - } - - return buf.WriteTo(w) + return buf, zw.Close() } -- cgit v1.2.1