Несоответствие типов: невозможно преобразовать из CellType в int - PullRequest
0 голосов
/ 29 апреля 2019

Я разрабатываю код автоматического тестирования со следующей ошибкой:

Type mismatch: cannot convert from CellType to int.

Пожалуйста, что я могу сделать?

public static String cellToString(HSSFCell cell) {
        // TODO Auto-generated method stub

        int type;
        Object result;
        type = cell.getCellType();

        switch (type) {

        case 0 : // numeric value in Excel
            result = cell.getNumericCellValue();
            break;
        case 1 : //String value in Excel
            result = cell.getStringCellValue();
            break;
            default:
                throw new RuntimeException("No support for this of cell");
        }
        return result.toString();
}

1 Ответ

1 голос
/ 29 апреля 2019

CellType - это enum, а не int. Тип вашей type переменной должен быть CellType, а ваш переключатель должен выглядеть следующим образом:

CellType type = cell.getCellType();
switch (type) {
    case CellType.NUMERIC : // numeric value in Excel
        result = cell.getNumericCellValue();
        break;
    case CellType.STRING : //String value in Excel
        result = cell.getStringCellValue();
        break;
        default:
            throw new RuntimeException("No support for this of cell");
    }

В качестве альтернативы вы можете использовать Enum#ordinal(), который возвращает порядковое целое число значения enum, но приведенный выше пример гораздо предпочтительнее.

РЕДАКТИРОВАТЬ: Также посмотрите на этот ответ о том, как получить значение ячейки в виде строки, используя Formatter вместо переключателя.

...