In meiner Excel-Tabelle enthalten viele Zellen Formeln, ich möchte diese Formeln nicht neu berechnen, wenn ich die Excel mit Apache POI gelesen habe.POI-XSSF: formatierten Wert aus Formelzellen zwischengespeicherten Wert lesen
Die Art, wie ich das tun:
if(cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) {
//System.out.println("Formula is " + cell.getCellFormula());
switch(cell.getCachedFormulaResultType()) {
case XSSFCell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() +" ");
break;
case XSSFCell.CELL_TYPE_STRING:
System.out.print(cell.getRichStringCellValue()+" ");
break;
}
}
Das hilft mir in der Zelle den Rohwert zu bekommen. Zum Beispiel, wenn die Zelle einen Wert von 19,5% hat, gibt dies mir 0,195456. Ich möchte den formatierten Wert erhalten.
Eine Möglichkeit, den formatierten Wert zu erhalten ist:
DataFormatter formatter = new DataFormatter();
System.out.print(formatter.formatCellValue(cell));
Das funktioniert gut für die regelmäßige Zellen, aber mit Formeln für Zellen, dies wird tatsächlich die Formel-String und zeigt sie an, das heißt, sie bekommen nicht das Cache-Wert und formatiert es, sondern gibt nur die Formelzeichenfolge zurück.
Gibt es eine Möglichkeit, einen Wert zu formatieren, nachdem es von CELL_TYPE_FORMULA Abrufen
tatsächlich sind die Formeln von einem Drittanbieter-Plugin, die ich nicht verwenden werde, ich brauche nur die zwischengespeicherten Werte korrekt formatiert werden – gaurav5430