Существуют ли какие-либо библиотеки для электронных таблиц Apache POI для обработки r/w формул с большей точностью, чем двойная?

Первоначально я искал BigDecimal с большей функциональностью, чем простой +-*/, что значительно меньше, чем то, что доступно на java.lang.Math.

Пожалуйста, не комментируйте sin и подобные функции, которые производят или требуют иррациональные числа, которые не подходят. Простой ответ на этот вопрос — использовать MathContext с подходящим/разумным пределом точности. Первоначально я выбрал BigDecimal только потому, что он предлагает больше цифр с двойной точностью.

Одна из моих идей заключалась в том, чтобы использовать библиотеку Apache Poi, надеясь, что она содержит работающий интерфейс функций с реальными реализациями для всех (ну, может быть, не для всех, но для многих) функций, которые можно найти в электронной таблице. К сожалению, просматривая javadoc, я не смог найти ничего похожего на интерфейс/классы.

  • Существуют ли какие-либо другие библиотеки, которые могут помочь с математическими вычислениями в ячейках poi excel, используя что-то с большей точностью, чем double?
  • лучшее, что я могу сказать, это использовать математику Apache Commons?
  • похоже, что функции, связанные с числами, в org.apache.poi.hssf.record.formula.functions.* работают только с двойниками.

person mP.    schedule 17.03.2011    source источник


Ответы (2)


Формат Excel хранит все числа внутри как двойной. Таким образом, хотя вы потенциально можете вычислять ответы с более высокой точностью, если вы сохраните их обратно в файл Excel, вы потеряете это. Кроме того, если у вас есть excel для вычисления самого значения, то ответ, который он сохранит, будет ограничен двойной точностью.

Если вы хотите выполнить оценку формулы с помощью POI, в основном она настроена на оценку содержимого ячейки. Один из вариантов — создать ячейку, установить в нее формулу, а затем оценить. Подробности см. в документации по оценке POI Apache.

Пакет org.apache.poi.ss.formula.functions содержит все реализации функций формул Excel, которые поддерживает POI, но они могут быть немного низкоуровневыми для вас (они работают с Ptgs, Ops и т. д.).

person Gagravarr    schedule 31.03.2011

Да, JExcel Энди Хана может обрабатывать формулы.

person duffymo    schedule 17.03.2011
comment
Я загрузил и взглянул на JExcel, и да, он выглядит очень хорошо организованным и имеет простой API, два превосходных атрибута, которые можно иметь в библиотеке. Однако я не смог найти какие-либо классы функций с execute() или подобными и т. д. Кроме того, jexcel, похоже, не продвинулся для поддержки новых форматов xl, таких как новые, основанные на xml. - person mP.; 19.03.2011