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