From 93160287bb7fa6479c73ee031b5ed771972a17a8 Mon Sep 17 00:00:00 2001 From: Lijingfeng <170574@qq.com> Date: Mon, 5 Oct 2020 22:17:11 +0800 Subject: 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 Co-authored-by: xuri --- file.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'file.go') diff --git a/file.go b/file.go index 6a48c0c..4a2ab10 100644 --- a/file.go +++ b/file.go @@ -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 { -- cgit v1.2.1