rows.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package excelize
  2. import (
  3. "encoding/xml"
  4. "strings"
  5. "strconv"
  6. )
  7. // GetRows return all the rows in a sheet
  8. func (f *File) GetRows(sheet string) ([]xlsxRow, error) {
  9. var xlsx xlsxWorksheet
  10. name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml`
  11. err := xml.Unmarshal([]byte(f.readXML(name)), &xlsx)
  12. if ( err != nil ) {
  13. return nil, err
  14. }
  15. rows := xlsx.SheetData.Row
  16. return rows, nil
  17. }
  18. // readXMLSST read xmlSST simple function
  19. func readXMLSST(f *File) (xlsxSST, error) {
  20. shardStrings := xlsxSST{}
  21. err := xml.Unmarshal([]byte(f.readXML(`xl/sharedStrings.xml`)), &shardStrings)
  22. return shardStrings, err
  23. }
  24. // GetValueFrom return a value from a column/row cell,
  25. // this function is inteded to be used with for range on rows
  26. // an argument with the xlsx opened file
  27. func (self* xlsxC) GetValueFrom(f *File) (string, error) {
  28. switch self.T {
  29. case "s":
  30. xlsxSI := 0
  31. xlsxSI, _ = strconv.Atoi(self.V)
  32. d, err := readXMLSST(f)
  33. if ( err != nil ) {
  34. return "", err
  35. }
  36. return d.SI[xlsxSI].T, nil
  37. case "str":
  38. return self.V, nil
  39. default:
  40. return self.V, nil
  41. } // switch
  42. }