Загрузка данных в Excel из Java в ошибке Java в org.apache.poi.xssf.usermodel.XSSFCell - PullRequest
0 голосов
/ 31 августа 2018

Я попытался загрузить данные Excel в базу данных, используя Apache.POI. их функция выдает ошибку типа

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: org.apache.poi.xssf.usermodel.XSSFCell cannot be cast to java.lang.Integer

Ошибка сегмента кода возникает в

for (Iterator iterator = dataHolder.iterator(); iterator.hasNext();) {
        List list = (List) iterator.next();
         i++;
        if (i > 0) {  
            ID =  (int) list.get(0);
            Employee_Number = list.get(1).toString();
            FirstName = list.get(2).toString();
            LastName = list.get(3).toString();
            EmailAddress = list.get(4).toString();
            PdfName = list.get(5).toString();
            Sup_EmailAddress = list.get(6).toString();
            PassCode = list.get(7).toString();

Может кто-нибудь подсказать мне, почему я получаю такую ​​ошибку?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Согласно официальному JavaDoc XSSFCell вместо него можно использовать getNumericCellValue().

public double getNumericCellValue()

Получить значение ячейки в виде числа.

Чтобы безопасно проверить, обрабатываете ли вы фактическое число, вы можете переписать фрагмент кода следующим образом:

import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.xssf.usermodel.XSSFCell;

int ID;
// ... loop here ...
    XSSFCell cell = list.get(0);
    if(CellType.NUMERIC == cell.getCellType()) {
        ID =  new Double(cell.getNumericCellValue()).intValue(); 
    } else {
        // handle this case separately... 
    }
// end loop

Приведенный выше фрагмент кода позволяет избежать ненужных приведений и / или попыток угадать ошибки.

Надеюсь, это поможет.

0 голосов
/ 31 августа 2018

Строка ID = (int) list.get(0); выдает ошибку, поскольку данные в ячейке не могут быть преобразованы в int. Попробуйте сохранить его как строку.

id = (String) list.get(0);

Или как длинный

id = (long) list.get(0);

Или обработать исключение

try {
  ID = (int) list.get(0);
} catch (ClassCastException e) {
  // id is not a number
}
...