Как извлечь значение процентного типа из таблицы Excel с помощью POI - PullRequest
5 голосов
/ 24 февраля 2012

Я пытаюсь прочитать таблицу Excel значений ячеек, используя Apache POI. Один из моих листов содержит процентный тип в качестве типа ячейки. Когда я читаю эту ячейку, используя POI, используя cell.getNumbericValue (), она возвращает мне двойное значение. Если ячейка содержит 11,24%, она возвращает мне 0,1124. Моя проблема в том, что я хочу прочитать символ% также из ячейки, то есть я хочу прочитать точные данные, как они есть в ячейке, как 11,24%. Итак, я попробовал это с помощью cell.toString (), даже тогда он возвращает мне то же значение, что и выше. Может ли кто-нибудь подсказать, пожалуйста, как избавиться от этой проблемы. заранее спасибо Nandu

Ответы [ 3 ]

9 голосов
/ 26 февраля 2013

Вы можете определить, отформатирована ли ячейка в процентах, протестировав строку формата данных ячейки следующим образом:

if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    if (cell.getCellStyle().getDataFormatString().contains("%")) {
        // Detect Percent Values 
        Double value = cell.getNumericCellValue() * 100;
        System.out.println("Percent value found = " + value.toString() +"%");
    } else {
        Double value = cell.getNumericCellValue();
        System.out.println("Non percent value found = " + value.toString());
    }
}

Это позволит вам различать форматированные значения в процентах и ​​обычные числовые значения.

2 голосов
/ 26 января 2015

Попробуй это, String typeCell = cell.getCellStyle (). GetDataFormatString (); Это дает

  • «Общее» значение для неформатированных ячеек,
  • "0%" для процентных форматов
  • дд / мм / гг для даты, зависит от локали

Мне удается проанализировать все типы в ячейках (числа, процент, дата, текст, валюта). Мне просто нужно проверить, какое значение для типа ячейки он мне вернет. Потому что у меня также много проблем с HSSFCell.CELL_TYPE_STRING или HSSFCell.CELL_TYPE_NUMERIC:

1 голос
/ 25 февраля 2012

11,24% - это 0,1124, именно поэтому это то, что хранится в файле, и это то, что вы получаете, когда запрашиваете числовое значение

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

...