You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2021/12/05 21:26:30 UTC
svn commit: r1895604 - in /poi/trunk/poi/src: main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java test/java/org/apache/poi/ss/formula/atp/TestXLookupFunction.java
Author: fanningpj
Date: Sun Dec 5 21:26:30 2021
New Revision: 1895604
URL: http://svn.apache.org/viewvc?rev=1895604&view=rev
Log:
initial work on example 5
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestXLookupFunction.java
Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java?rev=1895604&r1=1895603&r2=1895604&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java Sun Dec 5 21:26:30 2021
@@ -49,15 +49,15 @@ final class XLookupFunction implements F
public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
int srcRowIndex = ec.getRowIndex();
int srcColumnIndex = ec.getColumnIndex();
- return _evaluate(args, srcRowIndex, srcColumnIndex, ec.isSingleValue());
+ return _evaluate(args, srcRowIndex, srcColumnIndex);
}
@Override
public ValueEval evaluateArray(ValueEval[] args, int srcRowIndex, int srcColumnIndex) {
- return _evaluate(args, srcRowIndex, srcColumnIndex, false);
+ return _evaluate(args, srcRowIndex, srcColumnIndex);
}
- private ValueEval _evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex, boolean isSingleValue) {
+ private ValueEval _evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex) {
if (args.length < 3) {
return ErrorEval.VALUE_INVALID;
}
@@ -96,12 +96,12 @@ final class XLookupFunction implements F
return ErrorEval.VALUE_INVALID;
}
}
- return evaluate(srcRowIndex, srcColumnIndex, args[0], args[1], args[2], notFound, matchMode, searchMode, isSingleValue);
+ return evaluate(srcRowIndex, srcColumnIndex, args[0], args[1], args[2], notFound, matchMode, searchMode);
}
private ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval lookupEval, ValueEval indexEval,
ValueEval returnEval, ValueEval notFound, LookupUtils.MatchMode matchMode,
- LookupUtils.SearchMode searchMode, boolean isSingleValue) {
+ LookupUtils.SearchMode searchMode) {
try {
ValueEval lookupValue = OperandResolver.getSingleValue(lookupEval, srcRowIndex, srcColumnIndex);
TwoDEval tableArray = LookupUtils.resolveTableArrayArg(indexEval);
@@ -120,7 +120,7 @@ final class XLookupFunction implements F
if (returnEval instanceof AreaEval) {
AreaEval area = (AreaEval)returnEval;
int width = area.getWidth();
- if (isSingleValue || width <= 1) {
+ if (width <= 1) {
return notFound;
}
return notFoundAreaEval(notFound, width);
@@ -135,13 +135,6 @@ final class XLookupFunction implements F
}
if (returnEval instanceof AreaEval) {
AreaEval area = (AreaEval)returnEval;
- if (isSingleValue) {
- if (tableArray.isColumn()) {
- return area.getRelativeValue(matchedIdx, 0);
- } else {
- return area.getRelativeValue(0, matchedIdx);
- }
- }
if (tableArray.isColumn()) {
return area.offset(matchedIdx, matchedIdx,0, area.getWidth() - 1);
} else {
Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestXLookupFunction.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestXLookupFunction.java?rev=1895604&r1=1895603&r2=1895604&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestXLookupFunction.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestXLookupFunction.java Sun Dec 5 21:26:30 2021
@@ -75,7 +75,7 @@ public class TestXLookupFunction {
assertError(fe, cell, "XLOOKUP(B2,B5:B14,C5:D14)", FormulaError.NA);
String formulaText = "XLOOKUP(B2,B5:B14,C5:D14,\"not found\")";
- assertString(fe, cell, formulaText, "not found");
+ assertString(fe, cell, "XLOOKUP(B2,B5:B14,C5:C14,\"not found\")", "not found");
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row1 = sheet.getRow(1);
@@ -105,9 +105,7 @@ public class TestXLookupFunction {
HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
HSSFCell cell = wb.getSheetAt(0).getRow(2).createCell(3);
assertDouble(fe, cell, "XLOOKUP(D2,$B6:$B17,$C6:$C17)", 25000);
- assertDouble(fe, cell, "XLOOKUP($C3,$C5:$G5,$C6:$G17)", 50000);
- //TODO next test fails
- //assertDouble(fe, cell, "XLOOKUP(D2,$B6:$B17,XLOOKUP($C3,$C5:$G5,$C6:$G17))", 25000);
+ assertDouble(fe, cell, "XLOOKUP(D2,$B6:$B17,XLOOKUP($C3,$C5:$G5,$C6:$G17))", 25000);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org