by Anonymous » 29 Jul 2025, 06:35
Ich verwende Apachepoi5.2.5, um eine Xlookup -Formel in einem Excel -Blatt zu bewerten. Ein einfaches Xlookup funktioniert einwandfrei, aber wenn ich Funktionen kombiniere und verkettete, gibt der Evaluator einen Fehler zurück. /> < /ol>
Was funktioniert < /strong> < /p>
Code: Select all
FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();
// Simple XLOOKUP
cell.setCellFormula("_xlfn.XLOOKUP(C$11,"Sheet2!$A:$A,Sheet2!$Q:$Q)");
CellValue result = evaluator.evaluate(cell);
// result.getCellType() == CellType.NUMERIC or STRING as expected
Was fällt nicht
Code: Select all
FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();
cell.setCellFormula("_xlfn.XLOOKUP(LEFT(C$18,11)&C$9&C$11,Sheet2!$A$4:$A$600&Sheet2!$C$4:$C$600&Sheet2!$E$4:$E$600,Sheet2!$N$4:$N$600,\"Not found\")");
CellValue result = evaluator.evaluate(cell);
// result.getCellType() == CellType.ERROR
// result.getErrorValue() == 15 (#VALUE! error)
Environment[/b]
- Apache POI 5.2.5
- Java 21
- Excel file created in Office 365 (xlsm)
Any pointers or examples would be greatly geschätzt.
Ich verwende Apachepoi5.2.5, um eine Xlookup -Formel in einem Excel -Blatt zu bewerten. Ein einfaches Xlookup funktioniert einwandfrei, aber wenn ich Funktionen kombiniere und verkettete, gibt der Evaluator einen Fehler zurück. /> < /ol>
[b] Was funktioniert < /strong> < /p>
[code]FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();
// Simple XLOOKUP
cell.setCellFormula("_xlfn.XLOOKUP(C$11,"Sheet2!$A:$A,Sheet2!$Q:$Q)");
CellValue result = evaluator.evaluate(cell);
// result.getCellType() == CellType.NUMERIC or STRING as expected
[/code]
Was fällt nicht[code]FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();
cell.setCellFormula("_xlfn.XLOOKUP(LEFT(C$18,11)&C$9&C$11,Sheet2!$A$4:$A$600&Sheet2!$C$4:$C$600&Sheet2!$E$4:$E$600,Sheet2!$N$4:$N$600,\"Not found\")");
CellValue result = evaluator.evaluate(cell);
// result.getCellType() == CellType.ERROR
// result.getErrorValue() == 15 (#VALUE! error)
[/code]
Environment[/b]
[list]
[*]Apache POI 5.2.5
[*]Java 21
[*]Excel file created in Office 365 (xlsm)
[/list]
Any pointers or examples would be greatly geschätzt.