diff options
-rw-r--r-- | rows.go | 50 | ||||
-rw-r--r-- | test/Workbook1.xlsx | bin | 18311 -> 26846 bytes | |||
-rw-r--r-- | test/Workbook_2.xlsx | bin | 0 -> 26846 bytes | |||
-rw-r--r-- | test/Workbook_3.xlsx | bin | 0 -> 6879 bytes |
4 files changed, 50 insertions, 0 deletions
@@ -0,0 +1,50 @@ +package excelize + +import ( + "encoding/xml" + "strings" + "strconv" +) + + +// GetRows return all the rows in a sheet +func (f *File) GetRows(sheet string) ([]xlsxRow, error) { + var xlsx xlsxWorksheet + name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml` + err := xml.Unmarshal([]byte(f.readXML(name)), &xlsx) + if ( err != nil ) { + return nil, err + } + rows := xlsx.SheetData.Row + + return rows, nil + +} + + +// readXMLSST read xmlSST simple function +func readXMLSST(f *File) (xlsxSST, error) { + shardStrings := xlsxSST{} + err := xml.Unmarshal([]byte(f.readXML(`xl/sharedStrings.xml`)), &shardStrings) + return shardStrings, err +} + +// GetValueFrom return a value from a column/row cell, +// this function is inteded to be used with for range on rows +// an argument with the xlsx opened file +func (self* xlsxC) GetValueFrom(f *File) (string, error) { + switch self.T { + case "s": + xlsxSI := 0 + xlsxSI, _ = strconv.Atoi(self.V) + d, err := readXMLSST(f) + if ( err != nil ) { + return "", err + } + return d.SI[xlsxSI].T, nil + case "str": + return self.V, nil + default: + return self.V, nil + } // switch +} diff --git a/test/Workbook1.xlsx b/test/Workbook1.xlsx Binary files differindex d2a9a2e..2ac442a 100644 --- a/test/Workbook1.xlsx +++ b/test/Workbook1.xlsx diff --git a/test/Workbook_2.xlsx b/test/Workbook_2.xlsx Binary files differnew file mode 100644 index 0000000..efb9785 --- /dev/null +++ b/test/Workbook_2.xlsx diff --git a/test/Workbook_3.xlsx b/test/Workbook_3.xlsx Binary files differnew file mode 100644 index 0000000..dd63d14 --- /dev/null +++ b/test/Workbook_3.xlsx |