Ячейки чтения Apache POI со знаком% - PullRequest
0 голосов
/ 02 ноября 2011

Как я могу прочитать ячейки со знаком%? Если у меня 105% в ячейке Excel, POI говорит мне, что это должно быть прочитано как число (это нормально). Это дает мне 1.0d. Я ожидаю получить 105 или 1.05d.

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Когда Excel помещает 105% в ячейку, он на самом деле сохраняет числовое значение (с плавающей запятой) 1,05 вместе со строкой форматирования

Когда вы запрашиваете POI дать вам значение ячейки,он предоставит значение, которое Excel написал для вас, в вашем случае 1.05

POI также имеет классы, которые пытаются форматировать ячейки на основе примененных к ним строк форматирования, чтобы вернуть строку, значение которой показано в Excel(или, по крайней мере, очень близко к этому).Класс для этого: DataFormatter

Мудрый код, вы бы хотели что-то вроде этого:

// Create a formatter, do this once
DataFormatter formatter = new DataFormatter(Locale.US);

.....

for(Cell cell : row) {
    CellReference ref = new CellReference(cell);
    // eg "The value of B12 is 12.4%"
    System.out.println("The value of " + ref.formatAsString() + " is " + formatter.formatCellValue(cell));
}

То есть ячейка A1 содержала 105% в Excel, сохраненокак 1,05, выведите «Значение А1 составляет 105%»

1 голос
/ 02 ноября 2011

Вероятно, в Excel у вас 1.05 отформатирован в процентах, что заставляет его отображать как 105%.Я был бы очень удивлен, если POI не дает вам 1,05 ... может быть, вы отображаете число, округленное до одного знака после запятой?

...