Чтение Excel с использованием POI HSSFCell с ведущими нулями

Я пытаюсь прочитать файл Excel с помощью Java POI HSSF. Все работало нормально, за исключением того, что при значении 001001 HSSFCell вернет 1001.0.

Есть ли способ использовать HSSFCell для получения значения 001001?

Я не должен вносить какие-либо изменения в файл Excel.

Заранее благодарим за любую помощь и предложения.

Изменить

Я использовал следующий код:

cell.setCellType (Cell.CELL_TYPE_STRING); cell.toString ();

Я также запустил режим отладки и проверил значение ячейки в тот момент, когда HSSF захватит его. Он усекает начальные нули и преобразовывает их в двойные, поэтому я не вижу способа получить усеченные нули. Есть ссылка, в которой указано, что это может быть ошибка HSSF: http://osdir.com/ml/jakarta.poi.user/2003-02/msg00007.html

Кстати, я решил это жестко запрограммировав. Количество цифр известно заранее. Ссылка на код, который я использовал: Как отформатировать Java строка с нулем в начале?


person Amblll    schedule 12.06.2014    source источник
comment
Попробуйте прочитать это как строку   -  person Nishanthi Grashia    schedule 12.06.2014
comment
Я пробовал cell.setCellType (Cell.CELL_TYPE_STRING); линия ранее. Это помогает избавиться от необходимости различать, числовое значение или строковое значение. Я также просто пробовал другие 2 строки кода, я все еще получаю 1001.   -  person Amblll    schedule 12.06.2014
comment
Раньше я запускал режим отладки. По значению HssfCell я вижу, что значение равно 1001.0, тогда как он узнает, что нужно вернуть 2 ведущих нуля, если он уже усечен?   -  person Amblll    schedule 12.06.2014
comment
Этот вопрос заключается в том, чтобы различать значения данных 2.0 и 2. Чтобы прочитать их в строковом формате. Поэтому код: cell.setCellType (Cell.CELL_TYPE_STRING) будет работать. В моем случае я бы сохранил ведущие нули: 001001, но я продолжаю получать 1001 или 1001.0   -  person Amblll    schedule 12.06.2014


Ответы (1)


Можете ли вы попробовать прочитать его как строку вместо числового,

cell.setCellType(Cell.CELL_TYPE_STRING);

Изменение типа ячейки обычно не приводит к изменению содержимого ячейки. его можно получить одним из следующих способов:

cell.getStringCellValue();

cell.getRichStringCellValue().getString();
person Nishanthi Grashia    schedule 12.06.2014