Это не проблема отображения в Excel, потому что это значение уже было извлечено на Java с помощью Apache POI. Но когда XSSFCell#toString()
называется, код Apache POI использует следующее выражение для преобразования ячейки с типом CELL_TYPE_NUMERIC
в строку в toString()
:
return getNumericCellValue() + "";
Метод XSSFCell#getNumericCellValue()
возвращает double
, который при преобразовании в строку дает строку "2.01356229E8"
. Это ожидаемое преобразование Java от double
до String
, потому что "2.01356229E8"
- это представление научной нотации для 201356229
. (В математике представление 201356229
и 2.01356229E8
эквивалентны.)
Если столбец в базе данных Oracle, которые Вы сохраняете на это VARCHAR2
, то вам нужно отформатировать строковое значение перед сохранением в базу данных , Это будет хранить "201356229"
в id
:
DecimalFormat df = new DecimalFormat("#");
id = df.format(((XSSFCell) cellStoreVector.get(0)).getNumericCellValue());
Если столбец является NUMBER
, то не беспокойтесь, преобразовав его в строку первых, просто использовать числовое значение ячейки в качестве double
передать в базу данных.
double numericId = ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue();
Почему вы превращаете свои номера в строки, прежде чем записывать их в базу данных? Разве вы не должны хранить их как число вместо этого? – Gagravarr