#java #excel #apache #apache-poi
#java #excel #apache #apache-poi
Вопрос:
Я извлекаю свои ячейки из файла .xls следующим образом:
cell.getStringCellValue();
Но поскольку некоторые ячейки являются числовыми, я должен сделать это вместо этого:
try
{
cells[colIx] = cell.getStringCellValue();
} catch (IllegalStateException e)
{
cells[colIx] = String.valueOf(cell.getNumericCellValue());
}
поскольку он получает значение double, а затем преобразует его в строку, это приводит к некоторым нежелательным операциям, таким как:
- 1 преобразуется в 1.0 (не такая большая проблема)
- 16711680 преобразуется в 1.671168E7
Как мне решить эту проблему и получить фактическое значение ячейки вместо некоторых преобразованных чисел? Кроме того, все ячейки определены по умолчанию в Excel
Ответ №1:
Вы можете использовать DataFormatter
метод Apache POI formatCellValue(Cell cell)
, поскольку он возвращает форматированное значение ячейки в виде строки независимо от типа ячейки.
Согласно документу DataFormatter —
DataFormatter содержит методы для форматирования значения, хранящегося в ячейке. Это может быть полезно для отчетов и презентаций с графическим интерфейсом, когда вам нужно отображать данные точно так, как они отображаются в Excel. Поддерживаемые форматы включают валюту, SSN, проценты, десятичные дроби, даты, номера телефонов, почтовые индексы и т. Д.
Пример кода
DataFormatter dataFormatter= new DataFormatter();
// Inside loop
String cellValueStr = dataFormatter.formatCellValue(cell);
Ответ №2:
попробуйте использовать cell.getCellType(), как у вас есть
- числовое
- Дата
- числовое в научной нотации