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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to