NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Excel хранит некоторые ячейки как строки, но чаще всего числа с особыми правилами форматирования, применяемыми к ним. Что вам нужно сделать, это заставить эти правила форматирования работать против числовых ячеек, чтобы создавать строки, которые выглядят так, как в Excel.
К счастью, Apache POI имеет класс, чтобы сделать именно это - DataFormatter
Все, что вам нужно сделать, это что-то вроде:
Workbook wb = WorkbookFactory.create(new File("myfile.xls"));
DataFormatter df = new DataFormatter();
Sheet s = wb.getSheetAt(0);
Row r1 = s.getRow(0);
Cell cA1 = r1.getCell(0);
String asItLooksInExcel = df.formatCellValue(cA1);
Не имеет значения, какой тип ячейки, DataFormatter будет отформатировать его, насколько это возможно для вас, используя правила, применяемые в Excel
Используйте CellType , вы можете проверить все
if (cellValue.getCellType() == Cell.CELL_TYPE_NUMERIC)
// cellValue является числовым
if (cellValue.getCellType() == Cell.CELL_TYPE_STRING)
// cellValue является Строка
date также указана как числовая, в то время проверить данную ячейку на дату или нет, используя dateUtil
if (DateUtil.isCellDateFormatted(cellData))
после того, как вы сможете конвертировать значение ячейки в дату