Apache POI évaluer la formule

J'ai quelques formules dans les cellules de ma feuille, et je tiens à les évaluer après que je l'insérer certaines valeurs. Ex :

Ma formule est =SUM(B1,B2)

Avant les valeurs de l'insertion B1 valeur a été 1, et B2 valeur a été 3, et le résultat de la formule est 4

Après l'insertion de valeurs B1 a de la valeur 5, et B2 a de la valeur 2 mais la formule produit toujours 4, comment puis-je évaluer/déclencheur de ce calculé?

Naturellement, après avoir cliqué sur le bouton de retour sur la formule de la cellule de la nouvelle valeur 7 est calculé, il est un moyen de déclencher ce sans interaction manuelle?

Je suis à l'aide d'excel 2007, de sorte XSSFWorkbook

MODIFIER/MISE À JOUR :

J'ai utilisé Gabors solution avant qu'il l'a posté mais je suis en utilisant comme référence, voici ce qui se passe :

 Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.ss.formula.WorkbookEvaluator.<init>(Lorg/apache/poi/ss/formula/EvaluationWorkbook;Lorg/apache/poi/ss/formula/IStabilityClassifier;Lorg/apache/poi/hssf/record/formula/udf/UDFFinder;)V
        at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.<init>(XSSFFormulaEvaluator.java:64)
        at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.<init>(XSSFFormulaEvaluator.java:51)
...............
...............

Voici une partie du code :

public XSSFFormulaEvaluator getEvaluator(){
        if(evaluator == null){
            evaluator = new XSSFFormulaEvaluator(wb);
        }
        return evaluator;
    }

réellement appeler l'évaluateur :

//where index is int, and mycell is int
row = (XSSFRow) sheet.getRow(index);
cell = row.createCell(mycell);
getEvaluator().evaluateFormulaCell(cell);

Je suis à la recherche de quelqu'un utilise ce et a été un succès, pas ceux qui google solution sans vraiment de l'essayer, j'ai été googler beaucoup de choses à dire au moins.

Par Gagravar suggestion j'ai 2 Pi sur mon classpath :

        <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.8-beta1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.7</version>
    </dependency>

Je si j'ai besoin de 3,7 version pour XSSF classeurs etc.

SOLUTION :

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.8-beta2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.8-beta2</version>
        </dependency>
Le NoSuchMethodError m'indique que vous avez deux copies de la PI jar sur votre classpath. Vous assurer que vous n'avez que le, alors il devrait fonctionner correctement
veuillez voir ma mise à jour
C'est votre problème. Votre PI versions doivent correspondre. Vous aurez envie de 3,8-beta1 (ou encore mieux 3.8-beta2) pour les deux principaux PI pot, et le pi-ooxml. Vous ne pouvez pas le mix and match de PI pots entre les versions!
veuillez fournir une certaine forme de réponse afin que je puisse l'accepter
Sûr, c'est fait. Content que ça fonctionne!

OriginalL'auteur ant | 2011-04-19