Further improve read performance

Instead of re-encoding the full sheet to change the namespaces
in the encoded bytes, read the sheet again and do the byte
replacements there.

In this case, file access ends up being more performant than
marshaling the sheet back to XML.

In the SharedStrings test, ensure the strings are actually read.

Fix #439
This commit is contained in:
Harris 2019-08-06 16:43:56 -05:00
parent 3599b24c95
commit e07581e980
No known key found for this signature in database
GPG Key ID: 0139BFA5D1B8F737
2 changed files with 7 additions and 3 deletions

View File

@ -1003,7 +1003,11 @@ func TestSharedStrings(t *testing.T) {
if !assert.NoError(t, err) {
t.FailNow()
}
f.GetRows("Sheet1")
rows, err := f.GetRows("Sheet1")
if !assert.NoError(t, err) {
t.FailNow()
}
assert.Equal(t, "A", rows[0][0])
}
func TestSetSheetRow(t *testing.T) {

View File

@ -112,8 +112,8 @@ func (f *File) Rows(sheet string) (*Rows, error) {
return nil, ErrSheetNotExist{sheet}
}
if xlsx != nil {
output, _ := xml.Marshal(f.Sheet[name])
f.saveFileList(name, replaceWorkSheetsRelationshipsNameSpaceBytes(output))
data := f.readXML(name)
f.saveFileList(name, replaceWorkSheetsRelationshipsNameSpaceBytes(namespaceStrictToTransitional(data)))
}
return &Rows{
f: f,