summaryrefslogtreecommitdiff
path: root/stream.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2021-05-14 00:09:23 +0800
committerxuri <xuri.me@gmail.com>2021-05-14 00:09:23 +0800
commita1e1db1e6f2faa8286afb1e9291c51fa084b66f7 (patch)
tree29a0b6d7af2ca5dabd634af4821b588ed15ae0c9 /stream.go
parentbe12cc27f1d774154b17763c071e1dc6f91eab8c (diff)
This closes #838, fix wrong worksheet XML path of the stream writer in some case
Diffstat (limited to 'stream.go')
-rw-r--r--stream.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/stream.go b/stream.go
index f12b201..e5fa237 100644
--- a/stream.go
+++ b/stream.go
@@ -99,11 +99,11 @@ func (f *File) NewStreamWriter(sheet string) (*StreamWriter, error) {
return nil, err
}
- sheetXML := fmt.Sprintf("xl/worksheets/sheet%d.xml", sw.SheetID)
+ sheetPath := f.sheetMap[trimSheetName(sheet)]
if f.streams == nil {
f.streams = make(map[string]*StreamWriter)
}
- f.streams[sheetXML] = sw
+ f.streams[sheetPath] = sw
_, _ = sw.rawData.WriteString(XMLHeader + `<worksheet` + templateNamespaceIDMap)
bulkAppendFields(&sw.rawData, sw.worksheet, 2, 5)
@@ -462,6 +462,10 @@ func writeCell(buf *bufferedWriter, c xlsxC) {
// Flush ending the streaming writing process.
func (sw *StreamWriter) Flush() error {
+ if !sw.sheetWritten {
+ _, _ = sw.rawData.WriteString(`<sheetData>`)
+ sw.sheetWritten = true
+ }
_, _ = sw.rawData.WriteString(`</sheetData>`)
bulkAppendFields(&sw.rawData, sw.worksheet, 8, 15)
if sw.mergeCellsCount > 0 {
@@ -476,10 +480,10 @@ func (sw *StreamWriter) Flush() error {
return err
}
- sheetXML := fmt.Sprintf("xl/worksheets/sheet%d.xml", sw.SheetID)
- delete(sw.File.Sheet, sheetXML)
- delete(sw.File.checked, sheetXML)
- delete(sw.File.XLSX, sheetXML)
+ sheetPath := sw.File.sheetMap[trimSheetName(sw.Sheet)]
+ delete(sw.File.Sheet, sheetPath)
+ delete(sw.File.checked, sheetPath)
+ delete(sw.File.XLSX, sheetPath)
return nil
}