Comment lire la valeur de la cellule de la formule de la cellule à l'aide d'apache poi
Je suis en train de lire toutes les données à partir d'un fichier excel, qui ont aussi la formule de la cellule,
mais je n'ai aucune idée de ce qui de la cellule est la formule de la cellule. comment puis-je lire toutes les valeurs des cellules, indépendamment du type de la cellule.
Mon code ressemble à ceci
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
while (rows.hasNext()) {
row = (HSSFRow) rows.next();
Iterator cells = row.cellIterator();
while (cells.hasNext()) {
cell = (HSSFCell) cells.next();
if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
ar.add(cell.getStringCellValue());
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
ar.add(cell.getNumericCellValue());
}else if (cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA) {
ar.add(evaluator.evaluateFormulaCell(cell));
} else {
ar.add("");
}
}
}
Je suis l'obtention de la formule de la cellule la valeur 0
OriginalL'auteur Dipesh Gupta | 2013-07-07
Vous devez vous connecter pour publier un commentaire.
La méthode que vous cherchez est Cellule.getCachedFormulaResultType - pour une formule de cellule qui vais vous dire le type du résultat de la formule
Vous code peut ensuite être quelque chose comme:
Noter que les itérateurs donner uniquement les cellules qui sont définis dans le fichier, donc il y aura des lacunes, si les cellules n'ont jamais été utilisés. Si vous avez besoin d'obtenir toutes les cellules, y compris ceux qui manquent, voir la L'itération vs aller chercher les docs
cellule.getCachedFormulaResultType() renvoie 0.........
0 signifie qu'il est numérique. Dans ce cas, il suffit d'appeler la cellule.getNumericCellValue()
Essayez-le maintenant, j'avais oublié de changer le nombre de lignes qui ont utilisé du genre à aller pour le passé-un
Cela fonctionne bien avec moi. Merci! @DipeshGupta getCachedFormulaResultType renvoie la valeur réelle basée sur la formule donnée. Êtes-vous sûr que la cellule de votre tentative de poignée contient la formule?
OriginalL'auteur Gagravarr
Avec
Cell.getCachedFormulaResultType
nous obtenons la mise en cache de la formule de la valeur; c'est pourquoi nous avons à évaluer la formule pour obtenir la nouvelle valeurOriginalL'auteur Hasangi Kollure
Voici ma fonction:
OriginalL'auteur user2818657