Apache POI извлекает значение, как это выглядит в Excel - PullRequest
1 голос
/ 29 сентября 2011

У меня есть файл Excel и некоторое содержимое, поступающее из внешнего источника (база данных, файл, что угодно).Я столкнулся с проблемами с числовыми ячейками в Excel -getNumericValue возвращает двойное значение для любой ячейки, независимо от того, как значение отформатировано в ней.Внешний источник возвращает строковые представления чисел, т.е. он может возвращать «301» и «301.0», и это разные значения, и я не знаю, какой тип может быть в каком случае.Но если у меня есть «301» в файле Excel, метод getNumericValue всегда будет возвращать «301.0», поэтому, если мне нужно сравнить значения из внешнего источника и из Excel, «301» в Excel будет отличаться от «301» из внешнего источника,так как они будут иметь разные строковые представления.

Короче говоря, можете ли вы показать мне рабочий способ получить строковое представление значения ячейки, как это выглядит в Excel?У меня есть только классы HSSF *, доступные для использования.

Ответы [ 3 ]

3 голосов
/ 29 сентября 2011

Требуется класс DataFormatter .Обрабатывает форматирование содержимого ячейки на основе примененных к ней правил форматирования.Это должно дать вам в основном то, что Excel отображает

2 голосов
/ 28 марта 2012

основание другая нить вы, вероятно, можете сначала установить тип ячейки в строку, прежде чем получите ее значения

cell.setCellType(Cell.CELL_TYPE_STRING);

Я попробовал этот подход, когда получаю число с более чем 15 десятичными разрядами, и оно работает как шарм.

0 голосов
/ 29 сентября 2011

Не сравнивать String, вместо этого сравнивайте double:

String excelDouble=301.0;
String external="301";
Double externalDouble=Double.parseDouble(external);
externalDouble.equals(excelDouble); //return true
...