cell.go 918 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package excelize
  2. import (
  3. "encoding/xml"
  4. "strconv"
  5. "strings"
  6. )
  7. // Get value from cell by given sheet index and axis in XLSX file
  8. func GetCellValue(file []FileList, sheet string, axis string) string {
  9. axis = strings.ToUpper(axis)
  10. var xlsx xlsxWorksheet
  11. row := getRowIndex(axis)
  12. xAxis := row - 1
  13. name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml`
  14. xml.Unmarshal([]byte(readXml(file, name)), &xlsx)
  15. rows := len(xlsx.SheetData.Row)
  16. if rows <= xAxis {
  17. return ``
  18. }
  19. for _, v := range xlsx.SheetData.Row[xAxis].C {
  20. if xlsx.SheetData.Row[xAxis].R == row {
  21. if axis == v.R {
  22. switch v.T {
  23. case "s":
  24. shardStrings := xlsxSST{}
  25. xlsxSI := 0
  26. xlsxSI, _ = strconv.Atoi(v.V)
  27. xml.Unmarshal([]byte(readXml(file, `xl/sharedStrings.xml`)), &shardStrings)
  28. return shardStrings.SI[xlsxSI].T
  29. case "str":
  30. return v.V
  31. default:
  32. return v.V
  33. }
  34. }
  35. }
  36. }
  37. return ``
  38. }