https://bz.apache.org/bugzilla/show_bug.cgi?id=68979

            Bug ID: 68979
           Summary: NullPointerException in XSSFFormulaEvaluator with
                    reference to missing external workbook
           Product: POI
           Version: 5.2.3-FINAL
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XSSF
          Assignee: dev@poi.apache.org
          Reporter: apache-bugzilla-sebast...@kaselo.de
  Target Milestone: ---

Created attachment 39696
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=39696&action=edit
Input file for the unit test to reproduce the behaviour

The XSSFFormulaEvaluator may throw a NullPointerException when a cell
references an unknown workbook and the evaluator was explicitly told to ignore
missing workbooks.

I could reproduce the behaviour with versions 5.2.2 (included in jxls 2.14) up
to 5.2.4. With version 4.1.2 (included in jxls 2.12), the evaluator reads the
file without an error and produces a sheet with a single row and a single cell.
This is the behaviour I would still expect with the new version.

Here is a unit-test to reproduce the behaviour with the attached file, which
only contains a single sheet with a single cell:

@Test
void testFileWithFormulaReferenceToNonExistingFile() throws IOException {

   InputStream is = new FileInputStream("test.xlsx");
   XSSFWorkbook workbook = new XSSFWorkbook(is);

   FormulaEvaluator evaluator = new XSSFFormulaEvaluator(workbook);
   evaluator.setIgnoreMissingWorkbooks(true);
   evaluator.evaluateAll();

   Sheet sheet = workbook.getSheetAt(0);
   Iterator<Row> rowIt = sheet.rowIterator();
   Row row = rowIt.next();
   Assertions.assertEquals(1, row.getPhysicalNumberOfCells());
}

The formula is quite complex (with VLOOKUP, extracted from a real failing
example). I did not manage to simplify it without losing the reproducibility of
the problem.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org
For additional commands, e-mail: dev-h...@poi.apache.org

Reply via email to