несовместимые типы: от ячейки до строки, есть идеи, как решить проблему? - PullRequest
0 голосов
/ 02 марта 2019

Я хочу прочитать содержимое ячейки Excel и вставить его в список массивов, но я получаю следующую ошибку: несовместимые типы, ячейка не может быть преобразована в строку, как исправить проблему, плз? !!

часть кода, где существует ошибка:

while (rowIterator.hasNext()) {
    Row row = rowIterator.next();

    // Now let's iterate over the columns of the current row
    Iterator<Cell> cellIterator = row.cellIterator();
    int j=0;
    while (cellIterator.hasNext()) {

        Cell cell = cellIterator.next();
        Double cellValue;
        cellValue = Double.parseDouble(cell);
        dataPoint.add(cellValue);
        System.out.print(cellValue + "\t");
    }

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

новый код, в котором я пытался сначала проверить тип ячейки !!

  for (Row row : sheet1) {
        for (Cell cell : row) {


        // Alternatively, get the value and format it yourself
        switch (cell.getCellType()) {
            case CellType.NUMERIC:
                cellValue=cell.getNumericCellValue();
                break;

            default:
                CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex());
                System.out.println("The cell"+cellRef.formatAsString()+"Does not contain numeric value");
        }
        dataPoint.add(cellValue);
        }
    }
0 голосов
/ 02 марта 2019

Double#parseDouble принимает аргумент String, но вы пытаетесь передать ему объект Cell.

Вы можете получить значение ячейки, используя cell.getStringCellValue();.Итак, ваш код должен выглядеть следующим образом:

cellValue = Double.parseDouble(cell.getStringCellValue());

Если у вас возникнут проблемы с получением значения ячейки в виде String из numeric cell, вы можете установить тип ячейки на String, предварительно позвонив cell.setCellType(Cell.CELL_TYPE_STRING)получение значения из ячейки.

cell.setCellType(Cell.CELL_TYPE_STRING);
cellValue = Double.parseDouble(cell.getStringCellValue());

Редактировать:

Однако рекомендуется проверить тип ячейки, а затем получить значение ячейкисоответственно вместо установки типа ячейки Cell#setCellType для получения значения.Для получения дополнительной информации, пожалуйста, посетите ссылку .

...