Я использую ПОИ Apache 3.6. У меня есть столбец, который является пробелом. Я хотел бы смочь считать его и затем переместиться в следующий столбец. Даже если я мог бы решить NullPointerException
проблема я не мог добраться до следующей ячейки.
Вот мой фрагмент кода:
HSSFCell cell = row.getCell(c);
String value = null;
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_FORMULA:
value = "FORMULA value=" + cell.getCellFormula();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
value = "NUMERIC value=" + cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_STRING:
value = "STRING value=" + cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
value="";
break;
case HSSFCell.CELL_TYPE_ERROR:
value="error";
break;
default:
break;
}
System.out.println("CELL col=" + cell.getColumnIndex() + " VALUE=" + value);
Как я могу разрешить свою проблему?
Что ж, вы можете проверить значение null перед оператором switch или изменить выполняемый вами вызов row.getCell. При проверке документации Javadoc на наличие POI есть 2 формы: первая - это то, что вы используете, вторая имеет дополнительный параметр типа Row.MissingCellPolicy, где вы можете передать значение, которое автоматически преобразует пустые ячейки в пустые.
Наконец-то я получил то, что хочу. Благодарю mezmo за это. Я хочу поделиться точным фрагментом кода, который нужно изменить. Просто замените строку, имеющую:
HSSFCell cell = row.getCell(c);
на
HSSFCell cell=row.getCell(c, org.apache.poi.ss.usermodel.Row.CREATE_NULL_AS_BLANK );
Вам нужно проверить, если cell! = Null
, потому что, если ячейка не существует в строке, row.getCell (c)
возвращает null