konwertuj formuły arkusza kalkulacyjnego na java

Jakie narzędzia są dostępne do konwersji arkusza kalkulacyjnego OpenOffice lub Excel (ze wszystkimi jego formułami) na obiekt Java, który można wywołać w czasie wykonywania?

Oczywiście będzie to tylko silnik obliczeniowy i będzie dotyczył tylko liczb i tekstu, a nie wywołań czasowych i API.

Nawet przy nazwanych zakresach komórek używanych do (efektywnego) nazywania zmiennych kod wyjściowy byłby prawdopodobnie trudny do zrozumienia. Wymagałoby to refaktoryzacji, aby uzyskać bardziej normalny kod Java. Myślę jednak, że byłoby to przydatne do prototypowania niektórych zadań przetwarzania danych. Lub do osadzania niektórych silników obliczeniowych obsługiwanych przez zaawansowanego użytkownika Excel.

Edytować : Trywialny przykład:

WYGLĄD

        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

NAZWY KOMÓREK

        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

FORMUŁY

        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

przetłumaczyłoby na Javę jako coś w stylu:

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);
    }
}

Zakładam stały typ dla komórek - albo java.math.BigDecimal lub String.

questionAnswers(4)

yourAnswerToTheQuestion