diff options
author | xuri <xuri.me@gmail.com> | 2021-05-14 00:09:23 +0800 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2021-05-14 00:09:23 +0800 |
commit | a1e1db1e6f2faa8286afb1e9291c51fa084b66f7 (patch) | |
tree | 29a0b6d7af2ca5dabd634af4821b588ed15ae0c9 /stream.go | |
parent | be12cc27f1d774154b17763c071e1dc6f91eab8c (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.go | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -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 } |