Чтение значения даты из ячейки excel в виде строки

Я использую библиотеку apache poi для чтения файла excel. Я застреваю во время чтения ячейки пароля. Если пользователь вводит дату в качестве пароля в ячейке пароля, то есть 16/05/2012. Я читаю это значение как "41045", а значение должно быть "16/05/2012". Это мой код:

cell = row.getCell(); // date in the cell password '16/05/2012'
switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_STRING:
    cellValue = cell.getRichStringCellValue().getString();
    break;
case HSSFCell.CELL_TYPE_NUMERIC:
    if(cellCount == TEMPLATE_PASSWORD) {// if cell is password
        cell.setCellType(Cell.CELL_TYPE_STRING);
        cellValue = cell.getRichStringCellValue().getString(); // value read is 41045 and not "16/05/2012"
    }
    break;
default:
}

может кто-нибудь помочь в этом?

Спасибо.

Ответ 1

Класс, который вы ищете в POI, DataFormatter

Когда Excel записывает файл, некоторые ячейки хранятся в виде строковых строк, а другие хранятся в виде чисел (включая даты). Для последнего значение переменной с плавающей точкой, представляющее ячейку, сохраняется в файле, поэтому, когда вы запрашиваете POI для значения ячейки, что она на самом деле имеет.

Иногда, особенно при выполнении Text Extraction (но не всегда), вы хотите, чтобы значение ячейки выглядело так, как в Excel. Не всегда возможно получить это точно в String (например, не полный пробел), но класс DataFormatter поможет вам закрыть.

Также обратите внимание, что в Excel даты сохраняются как числа с плавающей запятой с ~ 1900, поэтому вы видите число, не являющееся датой. Используйте DataFormatter (или аналогичный), чтобы он отображался как дата

Ответ 2

Используйте приведенный ниже код, чтобы получить точный формат даты, так как u введено в листе excel.

DataFormatter df = new DataFormatter();
stringCellValue = df.formatCellValue(cell);

Ответ 3

Префикс значения ячейки с ', сохраняя его в xls, отображает его в ячейку строки. Итак, все, что вы читаете из этой ячейки, будет обрабатываться как строка и читать как есть.