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.
Pour une somme, ça roule :
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);
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");Mais sinon :
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
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()); // ...Y-a-t'il un souci avec la traduction des formules (VLOOKUP = RECHERCHEV) ?
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"
Je sèche là ...
Si vous avez des pistes, merci !
Captain Mich
Partager