convertir feuille de calcul formules de java

Quels sont les outils disponibles pour convertir un OpenOffice ou Excel (avec toutes ses formules) dans un objet Java qui peut être appelée au moment de l'exécution?

Évidemment, cela ne ferait qu'un moteur de calcul et juste être une question de chiffres et de texte, pas de timing ou les appels de l'API.

Même avec des plages de cellules nommées être utilisé pour (efficacement) le nom des variables, le code de sortie seraient sans doute difficile à comprendre. Il aurait besoin de refactoring pour obtenir de plus comme normal de code Java. Cependant, je pense qu'il serait utile pour le prototypage certains de traitement de données type d'emplois. Ou pour l'incorporation de certains moteurs de calcul maintenu par une avancée utilisateur d'Excel.

Modifier : Un exemple trivial:

APPARENCE

        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

DES NOMS DE CELLULES

        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

FORMULES

        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

serait de traduire en Java comme quelque chose comme:

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

Je suppose fixe type de cellules - un java.les mathématiques.BigDecimal ou une Chaîne de caractères.

S'il vous plaît ajouter un exemple montrant une source de feuille de calcul et quel est le code que vous vous attendez à être généré.
La cellule de nommage est une fonction standard dans Excel. J'ai utilisé BigDecimal dans l'exemple de réduire les problèmes d'arrondi (esp monnaie cvac).
Évidemment, le code ci-dessus exemple de génération de l'inconvénient qu'il ne représente pas la feuille à l'aide d'un tableau 2D dans la classe Java. Il serait nécessaire de le faire (et masquer nommé l'accès à la cellule derrière les getters et setters) pour soutenir des Sommes, des Allumettes, des Recherches ou quoi que ce soit référencer des plages de cellules.

OriginalL'auteur martinr | 2010-01-11