diff options
author | xuri <xuri.me@gmail.com> | 2018-06-29 09:53:57 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-29 09:53:57 +0800 |
commit | d80d6aa318e787397eb75835b3a17e15001a4b9c (patch) | |
tree | f81614a67e316e2a8b45b3715dff7d5032ff003b | |
parent | 07d568aa442f49d5d59703945319cd444154466e (diff) | |
parent | 2132de1a0848794a49225470e42f91e9c34bb6da (diff) |
Merge pull request #234 from dolmen-go/WriteTo
Extract WriteTo method (see io.WriterTo) to expose bytes written
-rw-r--r-- | file.go | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -60,6 +60,12 @@ func (f *File) SaveAs(name string) error { // Write provides function to write to an io.Writer. func (f *File) Write(w io.Writer) error { + _, err := f.WriteTo(w) + return err +} + +// WriteTo implements io.WriterTo to write the file. +func (f *File) WriteTo(w io.Writer) (int64, error) { buf := new(bytes.Buffer) zw := zip.NewWriter(buf) f.contentTypesWriter() @@ -70,21 +76,17 @@ func (f *File) Write(w io.Writer) error { for path, content := range f.XLSX { fi, err := zw.Create(path) if err != nil { - return err + return 0, err } _, err = fi.Write(content) if err != nil { - return err + return 0, err } } err := zw.Close() if err != nil { - return err - } - - if _, err := buf.WriteTo(w); err != nil { - return err + return 0, err } - return nil + return buf.WriteTo(w) } |