diff --git a/excelize.go b/excelize.go index 8e386a8bb91644006a14a97ca8a730791564db4e..a2e20ffe8232c7b966a26466023b90b063316627 100644 --- a/excelize.go +++ b/excelize.go @@ -66,7 +66,7 @@ func OpenFile(filename string) (*File, error) { return f, nil } -// object builder +// newFile is object builder func newFile() *File { return &File{ checked: make(map[string]bool), @@ -117,10 +117,11 @@ func OpenReader(r io.Reader) (*File, error) { return f, nil } -// CharsetTranscoder Set user defined codepage transcoder function for open XLSX from non UTF-8 encoding +// CharsetTranscoder Set user defined codepage transcoder function for open +// XLSX from non UTF-8 encoding. func (f *File) CharsetTranscoder(fn charsetTranscoderFn) *File { f.CharsetReader = fn; return f } -// Creates new XML decoder with charset reader +// Creates new XML decoder with charset reader. func (f *File) xmlNewDecoder(rdr io.Reader) (ret *xml.Decoder) { ret = xml.NewDecoder(rdr) ret.CharsetReader = f.CharsetReader diff --git a/rows.go b/rows.go index fc7b55ab20f82007fe661ff1b18ac904da130b7b..687828c79cbb997ba99e5e4545a91d13a3357daf 100644 --- a/rows.go +++ b/rows.go @@ -283,7 +283,10 @@ func (xlsx *xlsxC) getValueFrom(f *File, d *xlsxSST) (string, error) { case "s": xlsxSI := 0 xlsxSI, _ = strconv.Atoi(xlsx.V) - return f.formattedValue(xlsx.S, d.SI[xlsxSI].String()), nil + if len(d.SI) > xlsxSI { + return f.formattedValue(xlsx.S, d.SI[xlsxSI].String()), nil + } + return f.formattedValue(xlsx.S, xlsx.V), nil case "str": return f.formattedValue(xlsx.S, xlsx.V), nil case "inlineStr": diff --git a/sheet.go b/sheet.go index 3b22a0ea5a5b05d0da596ebe689e42d6f82b5451..6ef7c6ebe1656168a00a0796ba72c6cfc7393d4d 100644 --- a/sheet.go +++ b/sheet.go @@ -163,7 +163,7 @@ func (f *File) setContentTypes(index int) { func (f *File) setSheet(index int, name string) { xlsx := xlsxWorksheet{ Dimension: &xlsxDimension{Ref: "A1"}, - SheetViews: xlsxSheetViews{ + SheetViews: &xlsxSheetViews{ SheetView: []xlsxSheetView{{WorkbookViewID: 0}}, }, } diff --git a/xmlWorksheet.go b/xmlWorksheet.go index b785eacbf8fe62a9e77271258aff2ab457b284aa..71ff4cc57afae26d17b7b6791b469c224a11ae91 100644 --- a/xmlWorksheet.go +++ b/xmlWorksheet.go @@ -18,7 +18,7 @@ type xlsxWorksheet struct { XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main worksheet"` SheetPr *xlsxSheetPr `xml:"sheetPr"` Dimension *xlsxDimension `xml:"dimension"` - SheetViews xlsxSheetViews `xml:"sheetViews"` + SheetViews *xlsxSheetViews `xml:"sheetViews"` SheetFormatPr *xlsxSheetFormatPr `xml:"sheetFormatPr"` Cols *xlsxCols `xml:"cols"` SheetData xlsxSheetData `xml:"sheetData"`