code: func fillCellData(rawCell xlsxC, refTable *RefTable, sharedFormulas map[int]sharedFormula, cell *Cell) {
  	val := strings.Trim(rawCell.V, " \t\n\r")
  	cell.formula = formulaForCell(rawCell, sharedFormulas)
  	switch rawCell.T {
  	case "s": // Shared String
  		cell.cellType = CellTypeString
  		if val != "" {
  			ref, err := strconv.Atoi(val)
  			if err != nil {
  				panic(err)
  			}
  			cell.Value = refTable.ResolveSharedString(ref)
  		}
  	case "inlineStr":
  		cell.cellType = CellTypeInline
  		fillCellDataFromInlineString(rawCell, cell)
  	case "b": // Boolean
  		cell.Value = val
  		cell.cellType = CellTypeBool
  	case "e": // Error
  		cell.Value = val
  		cell.cellType = CellTypeError
  	case "str":
  		// String Formula (special type for cells with formulas that return a string value)
  		// Unlike the other string cell types, the string is stored directly in the value.
  		cell.Value = val
  		cell.cellType = CellTypeStringFormula
  	case "d": // Date: Cell contains a date in the ISO 8601 format.
  		cell.Value = val
  		cell.cellType = CellTypeDate
  	case "": // Numeric is the default
  		fallthrough
  	case "n": // Numeric
  		cell.Value = val
  		cell.cellType = CellTypeNumeric
  	default:
  		panic(errors.New("invalid cell type"))
  	}
  }
docs: // fillCellData attempts to extract a valid value, usable in
  // CSV form from the raw cell value.  Note - this is not actually
  // general enough - we should support retaining tabs and newlines.