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 2018/07/27 21:26:31 UTC
svn commit: r1836857 - in /poi/trunk/src:
java/org/apache/poi/ss/formula/functions/Vlookup.java
ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java
Author: fanningpj
Date: Fri Jul 27 21:26:31 2018
New Revision: 1836857
URL: http://svn.apache.org/viewvc?rev=1836857&view=rev
Log:
[bug-62275] in vlooup function, treat optional 4th param as true if the value is not provided
Modified:
poi/trunk/src/java/org/apache/poi/ss/formula/functions/Vlookup.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java
Modified: poi/trunk/src/java/org/apache/poi/ss/formula/functions/Vlookup.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/functions/Vlookup.java?rev=1836857&r1=1836856&r2=1836857&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/formula/functions/Vlookup.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/formula/functions/Vlookup.java Fri Jul 27 21:26:31 2018
@@ -52,7 +52,12 @@ public final class Vlookup extends Var3o
// lookup_value , table_array, range_lookup, find lookup value, col_index, fetch result
ValueEval lookupValue = OperandResolver.getSingleValue(lookup_value, srcRowIndex, srcColumnIndex);
TwoDEval tableArray = LookupUtils.resolveTableArrayArg(table_array);
- boolean isRangeLookup = LookupUtils.resolveRangeLookupArg(range_lookup, srcRowIndex, srcColumnIndex);
+ boolean isRangeLookup;
+ try {
+ isRangeLookup = LookupUtils.resolveRangeLookupArg(range_lookup, srcRowIndex, srcColumnIndex);
+ } catch(RuntimeException e) {
+ isRangeLookup = true;
+ }
int rowIndex = LookupUtils.lookupIndexOfValue(lookupValue, LookupUtils.createColumnVector(tableArray, 0), isRangeLookup);
int colIndex = LookupUtils.resolveRowOrColIndexArg(col_index, srcRowIndex, srcColumnIndex);
ValueVector resultCol = createResultColumnVector(tableArray, colIndex);
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java?rev=1836857&r1=1836856&r2=1836857&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java Fri Jul 27 21:26:31 2018
@@ -437,16 +437,17 @@ public final class TestXSSFFormulaEvalua
assertEquals("D 0,068", evaluator.evaluate(wb.getSheetAt(0).getRow(1).getCell(1)));
}
+ @Test
public void testBug62275() throws IOException {
try (Workbook wb = new XSSFWorkbook()) {
Sheet sheet = wb.createSheet();
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
- cell.setCellFormula("vlookup(A2,B1:B5,2,)");
+ cell.setCellFormula("vlookup(A2,B1:B5,2,true)");
- CreationHelper crateHelper = wb.getCreationHelper();
- FormulaEvaluator eval = crateHelper.createFormulaEvaluator();
+ CreationHelper createHelper = wb.getCreationHelper();
+ FormulaEvaluator eval = createHelper.createFormulaEvaluator();
eval.evaluate(cell);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org