convert spreadsheet-Formeln in java

Was sind Werkzeuge zur Konvertierung einer OpenOffice-oder Excel-Tabelle (mit allen Formeln) in ein Java-Objekt aufgerufen werden können, die zur Laufzeit?

Natürlich würde dies nur eine Berechnungs-engine und nur um zahlen und text, keine timing-oder API-Aufrufe.

Sogar mit benannten Zellbereichen verwendet wird, um (effektiv) name der Variablen der output-code würde vermutlich schwierig sein, zu verstehen. Es müssten die Umgestaltung zu bekommen, mehr wie normale Java-code. Aber ich denke, es wäre nützlich für das prototyping einige Daten, die Art der Verarbeitung von jobs. Oder für die Einbettung einige berechnungsmodule gepflegt durch eine fortgeschrittene Excel-Benutzer.

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

ZELLE NAMEN

        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

übersetzen würde in Java so etwas wie:

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 davon ausgehen, fixed type für Zellen, die entweder eine java.math.BigDecimal oder ein String sein.

Bitte fügen Sie ein Beispiel zeigt, einer Quelle Tabellenkalkulation und das, was code, den Sie erwarten würden, generiert werden.
Benennung der Zellen ist ein standard-feature in Excel. Ich habe BigDecimal im Beispiel zu reduzieren, Probleme mit der Rundung (esp Währung calcs).
Offensichtlich ist die oben genannten code-Generierung Beispiel hat den grundsätzlichen Nachteil, dass es nicht darstellen, das Blatt mit einem 2D-array im Java-Klasse. Es würde tun müssen (und verstecken benannte Zelle hinter sich greifen Getter und setter) zur Unterstützung von Summen, Spiele, Suchvorgänge oder irgendetwas verweisen auf Zellbereiche.

InformationsquelleAutor martinr | 2010-01-11

Schreibe einen Kommentar