Я не думаю, что у нас был этот класс, когда вы задавали вопрос, но сегодня есть простой ответ.
То, что вы хотите сделать, это использовать класс DataFormatter . Вы передаете эту ячейку, и она делает все возможное, чтобы вернуть вам строку, содержащую то, что Excel покажет вам для этой ячейки. Если вы передадите ей строковую ячейку, вы получите строку обратно. Если вы передадите ей числовую ячейку с примененными правилами форматирования, она отформатирует число, основываясь на них, и вернет вам строку.
В вашем случае я бы предположил, что к числовым ячейкам применяется правило целочисленного форматирования. Если вы попросите DataFormatter отформатировать эти ячейки, он вернет вам строку с целочисленной строкой.
Кроме того, обратите внимание, что многие люди предлагают делать это cell.setCellType(Cell.CELL_TYPE_STRING)
, но JavaDocs Apache POI совершенно ясно заявляют, что вы не должны этого делать ! Выполнение setCellType
вызова приведет к потере форматирования, поскольку javadocs объясняют, что единственный способ преобразовать строку в оставшееся форматирование - это использовать класс DataFormatter .