IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Documents Java Discussion :

[POI] évaluation impossible d'une formule


Sujet :

Documents Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Par défaut [POI] évaluation impossible d'une formule
    Bonjour,

    j'ai un souci avec l'évaluateur de formules de POI 3.0.2
    C'est ok pour certaines formules "simples" mais pas pour toutes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HSSFWorkbook classeur = // ...
    int n_feuille = // ...
    int row = // ...
    short colonne = // ...
    HSSFSheet feuille = classeur.getSheetAt(n_feuille);
    HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(feuille, classeur);
    Pour une somme, ça roule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	System.out.println("[START]");
    HSSFCell b3 = feuille.getRow(2).getCell((short)1);
    HSSFCell b4 = feuille.getRow(3).getCell((short)1);
    HSSFCell b5 = feuille.getRow(4).getCell((short)1);
    	System.out.println("B5 = " + b5.getCellFormula() + " = " + b5.getNumericCellValue());
    	System.out.println("[MàJ]");
    b3.setCellValue(11.0);
    b4.setCellValue(22.0);
    evaluator.setCurrentRow(feuille.getRow(4));
    evaluator.evaluateFormulaCell(b5);
    	System.out.println("B3 = " + b3.getNumericCellValue());
    	System.out.println("B4 = " + b4.getNumericCellValue());
    	System.out.println("--> B5 = " + b5.getNumericCellValue() + "\n");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [START]
    B5 = B4+B3 = 10.0
    [MàJ]
    B3 = 11.0
    B4 = 22.0
    --> B5 = 33.0
    Mais sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    HSSFRow ligne = feuille.getRow(row);
    HSSFCell cellule = ligne.getCell(colonne);
    	System.out.println("cellule = " + cellule.getCellFormula());
    evaluator.setCurrentRow(ligne);
    evaluator.evaluateFormulaCell(cellule);             /**** (Azerty.java:161) ****/
    	System.out.println("cellule = " + cellule.getNumericCellValue());		
    // ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cellule = VLOOKUP(E5,I9:J20,2, )
    java.util.EmptyStackException
    	at java.util.Stack.peek(Stack.java:79)
    	at java.util.Stack.pop(Stack.java:61)
    	at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateCell(HSSFFormulaEvaluator.java:386)
    	at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.internalEvaluate(HSSFFormulaEvaluator.java:338)
    	at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateFormulaCell(HSSFFormulaEvaluator.java:183)
    	at Azerty.evalCellule(Azerty.java:161)
    	at Azerty.main(Azerty.java:45)
    Exception in thread "main"
    Y-a-t'il un souci avec la traduction des formules (VLOOKUP = RECHERCHEV) ?
    Je sèche là ...

    Si vous avez des pistes, merci !


    Captain Mich

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Par défaut
    Bon ben c'est ok ...

    Il y avait un souci dans la formule !
    On m'avais fourni une maquette Excel avec cette formule RECHERCHEV(E5,I9:J20,2, ), qui fonctionnait en utilisant le classeur Excel avec Excel ^^
    J'ai tenté le coup avec RECHERCHEV(E5,I9:J20,2,0) et ça fonctionne beaucoup mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    evaluator.evaluateFormulaCell(cellule);
    	System.out.println("evaluateFormulaCell = " + cellule.getRichStringCellValue().toString());
    evaluator.evaluate(cellule);
    	System.out.println("evaluate = " + cellule.getRichStringCellValue().toString() );
    evaluator.evaluateInCell(cellule);
    	System.out.println("evaluateInCell = " + cellule.getRichStringCellValue().toString() );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    evaluateFormulaCell = 
    evaluate = 
    evaluateInCell = Octobre
    Je ne sais pas à quoi correspond le 0, mais il est clair que POI n'appréciait pas la formule incomplète.
    Pour info, j'injecte une valeur numérique dans E5 via POI et la cellule en question va chercher dans la matrice I9:J20 la correspondance avec le mois.
    evaluateInCell() calcule la formule et met le résultat dans le cellule, en écrasant la formule http://poi.apache.org/apidocs/org/ap...Evaluator.html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Par défaut
    Ah ouais, important, ça marche surtout avec POI 3.1.beta2 mais pas toujours bien avec POI 3.0.2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impossible d'étendre une formule
    Par _guillom dans le forum Excel
    Réponses: 2
    Dernier message: 12/12/2012, 17h45
  2. [XL-2007] Impossible d'affecter une formule à une cellule
    Par esigwald dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2011, 17h03
  3. [XL-2010] Impossible de Copier une formule d'un classeur Excel à un autre
    Par kenshirosan dans le forum Excel
    Réponses: 2
    Dernier message: 18/01/2011, 10h24
  4. évaluation d'une formule de Access sous delphi
    Par TEMDA75 dans le forum Bases de données
    Réponses: 7
    Dernier message: 04/11/2009, 04h20
  5. Réponses: 1
    Dernier message: 23/08/2007, 08h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo