Spreadsheet-Formeln in Java konvertieren

Welche Tools stehen zur Verfügung, um eine OpenOffice- oder Excel-Tabelle (mit all ihren Formeln) in ein Java-Objekt zu konvertieren, das zur Laufzeit aufgerufen werden kann?

Offensichtlich wäre dies nur eine Berechnungsmaschine und würde sich nur um Zahlen und Text handeln, nicht um Timing oder API-Aufrufe.

Selbst wenn benannte Zellbereiche verwendet werden, um Variablen (effektiv) zu benennen, ist der Ausgabecode vermutlich schwer zu verstehen. Es müsste umgestaltet werden, um mehr wie normaler Java-Code zu erhalten. Ich denke jedoch, dass es für das Prototyping einiger Datenverarbeitungsjobs nützlich wäre. Oder zum Einbetten einiger Berechnungsmodule, die von einem fortgeschrittenen Excel-Benutzer verwaltet werden.

Bearbeiten : Ein triviales Beispiel:

AUSSEHEN

        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

ZELLNAMEN

        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

FORMELN

        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

würde sich in Java wie folgt übersetzen:

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

Ich würde einen festen Typ für Zellen annehmen - entweder ein java.math.BigDecimal oder ein String.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage