mirror of https://github.com/apache/poi.git
init support for XLOOKUP
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1892115 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
48aaf3455e
commit
65a2e42a3d
|
@ -26,6 +26,9 @@ import java.util.Optional;
|
|||
/**
|
||||
* Implementation of Excel function XLOOKUP()
|
||||
*
|
||||
* POI does not currently support have return values with multiple columns and just takes the first cell
|
||||
* right now.
|
||||
*
|
||||
* <b>Syntax</b><br>
|
||||
* <b>XLOOKUP</b>(<b>lookup_value</b>, <b>lookup_array</b>, <b>return_array</b>, <b>[if_not_found]</b>, <b>[match_mode]</b>, <b>[search_mode]</b>)<p>
|
||||
*
|
||||
|
@ -75,11 +78,9 @@ final class XLookupFunction implements FreeRefFunction {
|
|||
if (matchedRow != -1) {
|
||||
if (returnEval instanceof AreaEval) {
|
||||
AreaEval area = (AreaEval)returnEval;
|
||||
if (area.getWidth() == 1) {
|
||||
return area.getRelativeValue(matchedRow, 0);
|
||||
} else {
|
||||
return area.getRow(matchedRow);
|
||||
}
|
||||
//TODO to fully support XLOOKUP, we should return the full row
|
||||
//but POI does not currently support functions returning multiple cell values
|
||||
return area.getRelativeValue(matchedRow, 0);
|
||||
}
|
||||
}
|
||||
if (notFound.isPresent()) {
|
||||
|
|
|
@ -49,10 +49,7 @@ public class TestXLookupFunction {
|
|||
try (HSSFWorkbook wb = initWorkbook2()) {
|
||||
HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
|
||||
HSSFCell cell = wb.getSheetAt(0).getRow(0).createCell(100);
|
||||
cell.setCellFormula("XLOOKUP(B2,B5:B14,C5:D14)");
|
||||
fe.notifyUpdateCell(cell);
|
||||
CellValue result = fe.evaluate(cell);
|
||||
//TODO add assertions
|
||||
assertString(fe, cell, "XLOOKUP(B2,B5:B14,C5:D14)", "Dianne Pugh");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue