diff options
author | xuri <xuri.me@gmail.com> | 2018-10-12 10:36:19 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-12 10:36:19 +0800 |
commit | d8a34af384d2fa2493e80bf0259454043b3ff54e (patch) | |
tree | b5af3b218fb3f59258fbcd4a9f4b12042ba1f48e | |
parent | f0234e6c08f77d23499945e2720a900306a12e95 (diff) | |
parent | 2be4d45c6270d2b8c3e80d8bd6a10cba71b5052a (diff) |
Merge pull request #275 from Zheaoli/master
Add Support for WriteTo Buffer
-rw-r--r-- | excelize_test.go | 4 | ||||
-rw-r--r-- | file.go | 20 |
2 files changed, 16 insertions, 8 deletions
diff --git a/excelize_test.go b/excelize_test.go index 9f738f3..b24e45b 100644 --- a/excelize_test.go +++ b/excelize_test.go @@ -135,6 +135,10 @@ func TestOpenFile(t *testing.T) { if err != nil { t.Log(err) } + _, err = xlsx.WriteToBuffer() + if err != nil { + t.Error(err) + } } func TestAddPicture(t *testing.T) { @@ -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() } |