2014-10-27 2 views
1

Я экспортирую файл Excel с помощью Apache POI, используя файл Excel в качестве источника, а для некоторых ячеек (не для всех) просто ссылаюсь на другие (например, ='worksheet2'.B13) или вычисляет значение со ссылкой (например, ='worksheet2'.C13 + 'worksheet2'.D13), они отображают нуль (0) вместо правильного значения.Экземпляр Excel, отображающий нуль вместо вычисленного/ссылочного значения

Странно, что когда я нажимаю на формулу и что-то меняю в ней, набрав пробел и удалив ее, а затем введите ввод, появится правильное значение!

Для информации тип этих ячеек «Номер/Стандарт».

Я также где-то читал, что я должен проверить «Включить итеративный расчет» в «Параметры Excel», но это не сработало для меня.

Заранее спасибо за помощь

+0

код пожалуйста .... – Buddha

+0

@Buddha Я не думаю, что это что-то связанное с кодом, потому что это одни и те же классы, которые я использую для генерации весь файл (в основном добавление строк и копирование формул), и он отлично работает для других ячеек. Поэтому я думаю, что это что-то не так с камерами. –

+0

Вы попробовали 'wb.setForceFormulaRecalculation (true);'? - см. эту ссылку: http://poi.apache.org/spreadsheet/eval.html –

ответ

3

С помощью @JohnBustos и @Gagravarr, я исправил проблему с помощью: wb.getCreationHelper().createFormulaEvaluator().evaluateAll();

По-видимому, кэши Excel ранее рассчитанные результаты (в моем случае это было Zero в исходном файле Excel), и нам необходимо вызвать пересчет для их обновления.

Смотрите эту ссылку: http://poi.apache.org/spreadsheet/eval.html/Раздел: «Пересчет формул»

Смежные вопросы