summaryrefslogtreecommitdiff
path: root/sheet.go
diff options
context:
space:
mode:
Diffstat (limited to 'sheet.go')
-rw-r--r--sheet.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/sheet.go b/sheet.go
index 8da2e89..caf87d9 100644
--- a/sheet.go
+++ b/sheet.go
@@ -120,18 +120,26 @@ func (f *File) workBookWriter() {
// workSheetWriter provides a function to save xl/worksheets/sheet%d.xml after
// serialize structure.
func (f *File) workSheetWriter() {
+
+ // optimize memory alloc
+ var arr []byte
+ buffer := bytes.NewBuffer(arr)
+ encoder := xml.NewEncoder(buffer)
+
for p, sheet := range f.Sheet {
if sheet != nil {
for k, v := range sheet.SheetData.Row {
f.Sheet[p].SheetData.Row[k].C = trimCell(v.C)
}
- output, _ := xml.Marshal(sheet)
- f.saveFileList(p, replaceRelationshipsBytes(f.replaceNameSpaceBytes(p, output)))
+ // reusing buffer
+ encoder.Encode(sheet)
+ f.saveFileList(p, replaceRelationshipsBytes(f.replaceNameSpaceBytes(p, buffer.Bytes())))
ok := f.checked[p]
if ok {
delete(f.Sheet, p)
f.checked[p] = false
}
+ buffer.Reset()
}
}
}