Apache POI странное форматирование чисел - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь конвертировать xls и xlsx файлы в csv с помощью apache poi, и я столкнулся с какой-то проблемой, которую я не знаю, как ее решить. Обычно, когда ячейка содержит большое число, код выводит это число в странный формат.

for (int cn = 0; cn < lastColumn; cn++) {
    Cell c = r.getCell(cn);
    if (c == null) {
        sb.append("|");
    } else {
        sb.append(c + "|");
    }
}

Пример:

Таблица содержит это число в одной ячейке: 84172870494

И вывод такой: 8.4172870494E10

Желаемый выход: 84172870494

В основном это добавляет "." и "E%" в конце.

1 Ответ

1 голос
/ 10 июня 2019

Вы должны определить свой формат, чтобы указать POI, как анализировать данные.

DataFormat format = wb.createDataFormat();
CellStyle style = wb.createCellStyle();
style.setDataFormat(format.getFormat("#.###############"));
cell.setCellStyle(style);

и проверьте формат xls:

https://poi.apache.org/components/spreadsheet/quick-guide.html#DataFormats https://support.microsoft.com/en-us/help/264372/how-to-control-and-understand-settings-in-the-format-cells-dialog-box

...