summaryrefslogtreecommitdiff
path: root/file.go
diff options
context:
space:
mode:
authorLijingfeng <170574@qq.com>2020-10-05 22:17:11 +0800
committerGitHub <noreply@github.com>2020-10-05 22:17:11 +0800
commit93160287bb7fa6479c73ee031b5ed771972a17a8 (patch)
treeb875bf60a7eb30a83ea233b52e5740609dda4f5a /file.go
parentf2b8798a34aab4411a50861a4cdf47203edc3a19 (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.go20
1 files changed, 20 insertions, 0 deletions
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 {