Comment obtenir la formule de la valeur de la cellule(données) à l'aide d'apache poi 3.1
Je suis à l'aide d'Apache poi-3.1-FINAL-20080629 dans mon application. ici, j'ai un problème à l'aide de la formule...
Ma Cellule la formule(feuil2!C10) et les données à l'intérieur de cette cellule est de type String (e.g de 3 456)...Comment accéder à la cellule aussi voulez afficher la formule.
Mon code Ressemble à ceci:
HSSFWorkbook wb = new HSSFWorkbook(file);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb);
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
System.out.println("\n");
Iterator cells = row.cellIterator();
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next();
int cellType = cell.getCellType();
if (HSSFCell.CELL_TYPE_NUMERIC == cellType)
System.out.print(cell.getNumericCellValue() + " ");
else if (HSSFCell.CELL_TYPE_STRING == cellType)
System.out.print(cell.getStringCellValue() + " ");
else if (HSSFCell.CELL_TYPE_BOOLEAN == cellType)
System.out.print(cell.getBooleanCellValue() + " ");
else if (HSSFCell.CELL_TYPE_BLANK == cellType)
System.out.print("BLANK ");
else if (HSSFCell.CELL_TYPE_FORMULA == cellType) {
System.out.print(evaluator.evaluateInCell(cell).toString() ); } else
System.out.print("Unknown cell type " + cellType);
}
}
évaluateur.evaluateInCell(cellule).toString() est en train de jeter exception de pointeur null. S'Il Vous Plaît Aider!!!
OriginalL'auteur user2097135 | 2014-04-10
Vous devez vous connecter pour publier un commentaire.
OK, alors d'abord, Apache POI 3.1 est plutôt vieux. L'indice est dans le bocal nom -
poi-3.1-FINAL-20080629
date de 2008, donc il y a 6 ans! C'est bien la peine de mise à niveau, la nombre de corrections de bugs depuis lors, est assez vaste....Comme pour votre problème, je suis assez sûr que vous ne voulez pas être l'appel de
evaluator.evaluateInCell
. C'est presque jamais la bonne méthode à appelerVous avez trois options s'offrent à vous, selon ce que vous voulez faire avec votre formule de la cellule:
Je veux la formule de la chaîne
Appel Cellule.getCellFormula et vous obtiendrez la formule de la chaîne
Je veux la dernière formule de la valeur Excel calculé
Lorsque Excel écrit un fichier, normalement, il enregistre la dernière valeur évaluée pour la formule, dans un cache, pour faire l'ouverture agréable et rapide. Vous pouvez lire ceci, si elle est présente, à partir de Apache POI. C'est seulement un cache, de sorte qu'il peut ne pas toujours être correct, mais il est normalement.
Vous devez appeler Cellule.getCachedFormulaResultType, puis de passer sur ce, et de lire les valeurs à l'aide de la normale getters, par exemple,
Je veux Apache POI pour calculer le résultat de la formule pour moi
Votre meilleur pari ici est d'obtenir un FormulaEvaluator objet et appel à évaluer:
La Apache POI Formule d'Évaluation à la page a plus sur tous ces
OriginalL'auteur Gagravarr
De son mieux pour faire comme ceci.
Précédemment, j'ai utilisé la solution avec
FormulaEvaluator
et dans ce cas, je suis frappé, à quelques exceptions près comme donné ci-dessous.OriginalL'auteur Ajmal sha