diff options
-rw-r--r-- | rows.go | 7 | ||||
-rw-r--r-- | test/Workbook1.xlsx | bin | 22958 -> 23055 bytes | |||
-rw-r--r-- | xmlSharedStrings.go | 8 |
3 files changed, 13 insertions, 2 deletions
@@ -82,6 +82,13 @@ func (xlsx *xlsxC) getValueFrom(f *File) (string, error) { if err != nil { return "", err } + if len(d.SI[xlsxSI].R) > 0 { + value := "" + for _, v := range d.SI[xlsxSI].R { + value += v.T + } + return value, nil + } return d.SI[xlsxSI].T, nil case "str": return xlsx.V, nil diff --git a/test/Workbook1.xlsx b/test/Workbook1.xlsx Binary files differindex d287361..ee52187 100644 --- a/test/Workbook1.xlsx +++ b/test/Workbook1.xlsx diff --git a/xmlSharedStrings.go b/xmlSharedStrings.go index 402d3f3..3b9d78a 100644 --- a/xmlSharedStrings.go +++ b/xmlSharedStrings.go @@ -3,8 +3,12 @@ package excelize import "encoding/xml" // xlsxSST directly maps the sst element from the namespace -// http://schemas.openxmlformats.org/spreadsheetml/2006/main currently I have -// not checked this for completeness - it does as much as I need. +// http://schemas.openxmlformats.org/spreadsheetml/2006/main. String values may +// be stored directly inside spreadsheet cell elements; however, storing the +// same value inside multiple cell elements can result in very large worksheet +// Parts, possibly resulting in performance degradation. The Shared String Table +// is an indexed list of string values, shared across the workbook, which allows +// implementations to store values only once. type xlsxSST struct { XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main sst"` Count int `xml:"count,attr"` |