diff options
author | Lijingfeng <170574@qq.com> | 2020-10-05 22:17:11 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-05 22:17:11 +0800 |
commit | 93160287bb7fa6479c73ee031b5ed771972a17a8 (patch) | |
tree | b875bf60a7eb30a83ea233b52e5740609dda4f5a /file.go | |
parent | f2b8798a34aab4411a50861a4cdf47203edc3a19 (diff) |
Optimize memory usage when stream flush and save (#659)
* use io.Copy from stream temp file to zip Writer
* fix nil
* log
* build
* delete log
* fix compatibility for office
* Update go module
Co-authored-by: lijingfeng <lijingfeng@laiye.com>
Co-authored-by: xuri <xuri.me@gmail.com>
Diffstat (limited to 'file.go')
-rw-r--r-- | file.go | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -110,6 +110,26 @@ func (f *File) WriteToBuffer() (*bytes.Buffer, error) { f.sharedStringsWriter() f.styleSheetWriter() + for path, stream := range f.streams { + fi, err := zw.Create(path) + if err != nil { + zw.Close() + return buf, err + } + var from io.Reader + from, err = stream.rawData.Reader() + if err != nil { + stream.rawData.Close() + return buf, err + } + _, err = io.Copy(fi, from) + if err != nil { + zw.Close() + return buf, err + } + stream.rawData.Close() + } + for path, content := range f.XLSX { fi, err := zw.Create(path) if err != nil { |