Encore une fois, c'est Apache POI, une continuation de la dernière fois. https://qiita.com/Mk-4000/items/5d52b4b92ed5f8bf23f5
La dernière fois que j'ai écrit comment obtenir chaque type de cellule, ** CellType.FORMULA ** Méthode au moment de getCellFormula() Ensuite, j'ai trouvé que la formule elle-même dans la cellule peut être obtenue en tant que type String. Alors que faire si vous voulez le résultat de cette formule? Que faire quand vous dites.
J'ai cherché quelque chose que je ne pouvais pas faire de différentes manières et je me suis référé à cet article. http://shin-kawara.seesaa.net/article/159878953.html
** Interface de Formula Evaluator ** Il y avait quelque chose qui s'appelait.
Cela évalue la cellule de formule. Faites-en une valeur. En bref, cela aide beaucoup à obtenir la valeur calculée.
Aussi, ** Interface CreationHelper ** Il semble utiliser aussi. C'est un objet qui gère l'instanciation de classes concrètes. Je pense que c'est celui qui crée divers objets POI.
Préparez ces deux,
C'est un flux comme.
FormulaEvaluator.evaluateInCell(cell) Une méthode qui place une cellule dans l'argument, évalue et calcule la formule de la cellule incluse dans l'argument et renvoie le résultat
Si vous l'utilisez, vous pouvez obtenir la valeur calculée même avec une formule.
SamplePOI3.java
private static String getCellStringValue(Cell cell) {
String retStr;
CellType cellType = cell.getCellType();
switch (cellType) {
case STRING:
retStr = cell.getStringCellValue();
break;
case NUMERIC:
retStr = String.valueOf(cell.getNumericCellValue());
break;
case BOOLEAN:
retStr = String.valueOf(cell.getBooleanCellValue());
break;
case FORMULA:
//Obtenir le résultat de la fonction
Workbook wb = cell.getSheet().getWorkbook();
CreationHelper ch = wb.getCreationHelper();
FormulaEvaluator fe = ch.createFormulaEvaluator();
retStr = String.valueOf(getCellStringValue(fe.evaluateInCell(cell)));
break;
case ERROR:
retStr = String.valueOf(cell.getErrorCellValue());
break;
default:
retStr = "";
break;
}
return retStr;
}
samplePOI3.result
1.0
2.0
3.0
Recommended Posts