summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarris <mike.harris@cerner.com>2019-08-06 16:43:56 -0500
committerHarris <mike.harris@cerner.com>2019-08-07 08:06:40 -0500
commite07581e980444b64bc15fce328ff07736ac9dbf6 (patch)
tree50db71365960a81bd46f72818704a562dd5f69d3
parent3599b24c9594acaa8449d38745993d8be29c6af9 (diff)
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
-rw-r--r--excelize_test.go6
-rw-r--r--rows.go4
2 files changed, 7 insertions, 3 deletions
diff --git a/excelize_test.go b/excelize_test.go
index 79010b1..4169983 100644
--- a/excelize_test.go
+++ b/excelize_test.go
@@ -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) {
diff --git a/rows.go b/rows.go
index cb0e31f..220c233 100644
--- a/rows.go
+++ b/rows.go
@@ -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,