Чтение POI строк excel как числовых

Я использую Apache POI для чтения файла excel. И, читая его, я заметил, что он принимает строки как значения float.

Если моя ячейка содержит 1, она будет извлекать ее как 1.0

Я взял некоторые подсказки из предыдущих вопросов здесь и изменил код, но все же представление float остается таким, каким оно есть.

Как я правильно прочитал данные для строк и дат?

DataFormatter df = new DataFormatter(); for (Row row : sheet) { for(int cn=0; cn<row.getLastCellNum(); cn++) { // If the cell is missing from the file, generate a blank one // (Works by specifying a MissingCellPolicy) Cell cell = row.getCell(cn, Row.CREATE_NULL_AS_BLANK); // Print the cell for debugging cell.setCellType(Cell.CELL_TYPE_STRING); System.out.println("CELL: " + cn + " --> " + df.formatCellValue(cell)); if (row.getRowNum() == 0) { sheetColumnNames.add(cell.getRichStringCellValue().getString()); } } } 

Продвижение комментария к ответу

Проблема заключается в вызове

 cell.setCellType(Cell.CELL_TYPE_STRING); 

Что это значит, попросите POI попытаться преобразовать ячейку из всего, что она есть (например, число) в строку. Преобразование, применяемое для этого, довольно простое, поэтому вы теряете форматирование

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

Добавляя к вышеуказанному ответу, poi предоставит вам 1.0 в качестве вывода, даже если вы используете класс dataformatter, если вы пытаетесь выполнить программу против электронной таблицы LIBRE OFFICE. Поскольку poi не работает подобным образом с LIBRE SPREADSHEETS, так как он с excel.

  • Apache POI SAX Parsing - Как получить фактическое значение ячейки
  • Источник не найден во время отладки
  • Как собрать ссылки из Excel в arraylist
  • Как узнать ячейки, которые выровнены по объединенной ячейке в excel
  • Выбор excel java api
  • Загрузите созданный файл excel из Rest Controller
  • Ошибка Jxls: невозможно загрузить XLS-трансформатор. Убедитесь, что реализация Transformer находится в пути к классам
  • Apache POI «Недопустимая подпись заголовка», открывающая Excel XML
  • Что вызывает исключение java.lang.ArrayIndexOutOfBoundsException и как его предотвратить?
  • Как добавить комментарии к заметке Excel с помощью POI?
  • Как сохранить файл без переопределения существующего с тем же именем
  • Interesting Posts

    Excel VBA – добавление диапазона к другому листу, получение ошибки «Subscript out of Range»

    Открыть несколько файлов XL, захватить данные, а затем записать в Pandas / Output в один файл Excel

    Есть ли способ снять защиту листа Excel (* xls) с помощью шестнадцатеричного редактора?

    Как использовать буквы столбцов в VBA

    Подключить R из Excel – DCOM? R добавить в Excel?

    Найти текст в нескольких столбцах в excel

    гиперссылка в excel, если файл существует в папке

    Как не удается Worksheet_Изменить из Excel VBA, если включен макрос

    Вставить типы Interop в false, что не работает

    Excel: копировать значение ячейки в другую в зависимости от значений других

    Значения карт в excel

    Как я могу сделать несколько сводных таблиц, имитирующих фильтры (метку отчета и строки) другого только на этом листе в excel?

    Как я могу выразить значения NaN в Excel?

    VBA Excel Преобразование элемента String Array в Long "Type Mismatch"

    Макро (excel_mac) Перенос данных из таблицы в другую и добавление строки после

    Давайте будем гением компьютера.