Java POI: Wie liest man den Excel-Zellenwert und nicht die Formel, die es berechnet?
Bin ich mit der Apache POI API zum abrufen von Werten aus einer Excel-Datei.
Alles funktioniert Super, außer bei Zellen mit Formeln. In der Tat, die cell.getStringCellValue()
ist die Rückkehr der Formel in die Zelle und nicht den Wert der Zelle.
Habe ich versucht zu verwenden evaluateFormulaCell()
Methode, aber es funktioniert nicht, weil ich bin mit PIVOTDATENZUORDNEN Excel-Formel, und diese Formel ist nicht implementiert in der API:
Exception in thread "main" org.apache.poi.ss.formula.eval.NotImplementedException: Error evaluating cell Landscape!K11
at org.apache.poi.ss.formula.WorkbookEvaluator.addExceptionInfo(WorkbookEvaluator.java:321)
at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:288)
at org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:221)
at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateFormulaCellValue(HSSFFormulaEvaluator.java:320)
at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateFormulaCell(HSSFFormulaEvaluator.java:213)
at fromExcelToJava.ExcelSheetReader.unAutreTest(ExcelSheetReader.java:193)
at fromExcelToJava.ExcelSheetReader.main(ExcelSheetReader.java:224)
Caused by: org.apache.poi.ss.formula.eval.NotImplementedException: GETPIVOTDATA
at org.apache.poi.hssf.record.formula.functions.NotImplementedFunction.evaluate(NotImplementedFunction.java:42)
InformationsquelleAutor der Frage Aminoss | 2011-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die Formel-Zellen, excel speichert zwei Dinge. Das eine ist die Formel selbst, die andere ist das "zwischengespeicherte" Wert (der Letzte Wert, den die Formel ausgewertet wurde)
Wenn Sie möchten, bekommen Sie die Letzte zwischengespeicherte Wert (die unter Umständen nicht mehr korrekt sein, aber so lange, wie Excel die Datei gespeichert und Sie haben sich nicht verändert, es sollte es sein), Sie wollen so etwas wie:
InformationsquelleAutor der Antwort Gagravarr
Bisher geposteten Lösungen haben bei mir nicht funktioniert.
cell.getRawValue()
kehrte die gleiche Formel wie beschrieben in die Zelle. Die folgende Funktion bei mir funktioniert:InformationsquelleAutor der Antwort SelThroughJava
Gibt es einen alternativen Befehl, wo man die raw-Wert der Zelle, wo die Formel auf. Es gibt Typ String ist. Verwendung:
InformationsquelleAutor der Antwort Sanjay Singh