code: private Object getCellValue(Cell cell) {
      Object value;
  
      // Empty cells are null, instead of BLANK
      if (cell == null) {
        return null;
      }
  
      switch (cell.getCellTypeEnum()) {
        case STRING:
          value = cell.getStringCellValue();
          break;
        case NUMERIC:
          if (isCellDateFormatted(cell)) {
            try {
              // Excel dates are LocalDateTime, stored without timezone.
              // Interpret them as UTC to prevent ambiguous DST overlaps which happen in other
              // timezones.
              setUserTimeZone(LocaleUtil.TIMEZONE_UTC);
              Date dateCellValue = cell.getDateCellValue();
              value = formatUTCDateAsLocalDateTime(dateCellValue);
            } finally {
              resetUserTimeZone();
            }
          } else {
            value = cell.getNumericCellValue();
          }
          break;
        case BOOLEAN:
          value = cell.getBooleanCellValue();
          break;
        case FORMULA:
          value = getTypedFormulaValue(cell);
          break;
        default:
          value = null;
          break;
      }
      return value;
    }
docs: Retrieves the proper Java type instance based on the Excel CellTypeEnum