Получить фактическое значение ячейки ячейки Excel с помощью POI без определения типа данных

#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(), как у вас есть

  1. числовое
  2. Дата
  3. числовое в научной нотации