]> source.dussan.org Git - poi.git/commitdiff
[bug-62275] in vlooup function, treat optional 4th param as true if the value is...
authorPJ Fanning <fanningpj@apache.org>
Fri, 27 Jul 2018 21:26:31 +0000 (21:26 +0000)
committerPJ Fanning <fanningpj@apache.org>
Fri, 27 Jul 2018 21:26:31 +0000 (21:26 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1836857 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/formula/functions/Vlookup.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java

index 5bdfeba0366f206e73ca50b6962a3908a1c4e8b8..a2daa856e401712bae4c66652a293f8b74b7a88d 100644 (file)
@@ -52,7 +52,12 @@ public final class Vlookup extends Var3or4ArgFunction {
                        // 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);
index cd1048662672907edbe0fbd8570f9585cae83760..f8f71686fa42b7ad107b739f2ad469e85458fc36 100644 (file)
@@ -437,16 +437,17 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
         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);
         }
     }