Używam API Apache POI do pobierania wartości z pliku Excel. Wszystko działa dobrze, z wyjątkiem komórek zawierających formuły. W rzeczywistości cell.getStringCellValue()
zwraca formułę użytą w komórce, a nie wartość komórki.Jawne punkty POI: jak odczytać wartość komórki Excela, a nie formułę obliczającą ją?
Próbowałem użyć evaluateFormulaCell()
metody, ale to nie działa, ponieważ używam formuły GETPIVOTDATA Excel i wzór ten nie jest realizowany w 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)
tak, to działa. dobrze zrobione :) – Aminoss
Jeśli to działa, pamiętaj, aby "zaakceptować" odpowiedź. – Wivani
Co powiesz na daty z pamięci podręcznej? Komórki dat są oznaczane jako Cell.CELL_TYPE_NUMERIC. –