From 891e5baac1a6ac67123fbc6a68f801720882b8ec Mon Sep 17 00:00:00 2001 From: xuri Date: Tue, 11 Jan 2022 00:24:24 +0800 Subject: ref #1096, reduce memory usage by about 50% for large data spreadsheet --- cell.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'cell.go') diff --git a/cell.go b/cell.go index 7a26e78..ff9a131 100644 --- a/cell.go +++ b/cell.go @@ -375,8 +375,18 @@ func (f *File) sharedStringsLoader() (err error) { if path, ok := f.tempFiles.Load(defaultXMLPathSharedStrings); ok { f.Pkg.Store(defaultXMLPathSharedStrings, f.readBytes(defaultXMLPathSharedStrings)) f.tempFiles.Delete(defaultXMLPathSharedStrings) - err = os.Remove(path.(string)) - f.SharedStrings, f.sharedStringItemMap = nil, nil + if err = os.Remove(path.(string)); err != nil { + return + } + f.SharedStrings = nil + } + if f.sharedStringTemp != nil { + if err := f.sharedStringTemp.Close(); err != nil { + return err + } + f.tempFiles.Delete(defaultTempFileSST) + f.sharedStringItem, err = nil, os.Remove(f.sharedStringTemp.Name()) + f.sharedStringTemp = nil } return } -- cgit v1.2.1