Какие инструменты доступны для преобразования таблицы OpenOffice или Excel (со всеми ее формулами) в объект Java, который можно вызвать во время выполнения?преобразовать формулы таблиц в java
Очевидно, что это будет делать только вычислительный механизм и просто будет содержать цифры и текст, а не время или вызовы API.
Даже если диапазоны названных ячеек используются для (эффективно) имен переменных, выходной код, вероятно, будет трудно понять. Для этого потребуется рефакторинг, чтобы он больше похож на обычный Java-код. Однако я думаю, что это было бы полезно для прототипирования некоторых заданий типа обработки данных. Или для внедрения некоторых вычислительных механизмов, поддерживаемых продвинутым пользователем Excel.
Редактировать: Тривиальный пример:
ВИД
A B C D
1 Mortgage Value 100,000.00
2 Interest rate 4.5%
3 Type Interest-only
4 Years 3
5 Regular payment 4,500.00
6 Total interest 13,500.00
ЭЛЕМЕНТОВ ИМЕНА
A B C D
1 Mortgage Value VALUE
2 Interest rate INTEREST
3 Type TYPE
4 Years YEARS
5 Regular payment REGPYMT
6 Total interest TOTALPYMT
ФОРМУЛЫ
A B C D
1 Mortgage Value 100,000.00
2 Interest rate 4.5%
3 Type Interest-only
4 Years 3
5 Regular payment =VALUE*INTEREST
6 Total interest =YEARS*REGPYMT
воплотится в Java, как что-то вроде:
package example.calcengine;
import java.math.*;
public class MyCalcEngine {
// unnamed cells
public String A1 = "Mortgage Value";
public String A2 = "Interest rate";
public String A3 = "Type";
public String A4 = "Years";
public String A5 = "Regular payment";
public String A6 = "Total interest";
// named cells
public BigDecimal VALUE = new BigDecimal(100000.00);
public BigDecimal INTEREST = new BigDecimal(0.045);
public String TYPE = "Interest-only";
public BigDecimal YEARS = new BigDecimal(3);
public BigDecimal REGPYMT = new BigDecimal(0);
public BigDecimal TOTALPYMT = new BigDecimal(0);
// formulas
public void calculate() {
REGPYMT = VALUE.multiply(INTEREST);
TOTALPYMT = REGPYMT.multiply(YEARS);
}
}
Я бы предположить, фиксированный тип для клеток - либо java.math.BigDecimal или String.
Пожалуйста, добавьте пример, показывающий источник таблицы и что кода, который вы ожидаете получить. –
Именование сот является стандартной функцией в Excel.Я использовал BigDecimal в примере, чтобы уменьшить проблемы с округлением (esp currency calcs). – martinr
Очевидно, что приведенный выше пример генерации кода имеет фундаментальный недостаток, что он не представляет лист с использованием 2D-массива в классе Java. Это должно было бы сделать это (и скрыть доступ к ячейкам по ячейкам для геттеров и сеттеров), чтобы поддерживать SUM, MATCHes, LOOKUP или что-либо, ссылающееся на диапазоны ячеек. – martinr