XSSF sheet with worksheet function whose arguments are overlapping intersecting ranges, for example =SUM(B3:C3 C3:C4), generates a FormulaParseException from the following code (stack trace below). FileInputStream fileIn = new FileInputStream(new File("intersect.xlsx")); Workbook wb = WorkbookFactory.create(fileIn); fileIn.close(); FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator(); eval.evaluateAll(); Speculation: A Possible Fix: In FormulaParser, in Arguments() method, replace call to temp.add(comparisonExpression()); with temp.add(intersectionExpression()); instead. This appears to fix it for me! ------------------------------------------------------- Exception in thread "main" org.apache.poi.ss.formula.FormulaParseException: Parse error near char 10 'C' in specified formula 'SUM(B3:C3 C3:C4)'. Expected ',' or ')' at org.apache.poi.ss.formula.FormulaParser.expected(FormulaParser.java:262) at org.apache.poi.ss.formula.FormulaParser.Arguments(FormulaParser.java:1444) at org.apache.poi.ss.formula.FormulaParser.function(FormulaParser.java:1316) at org.apache.poi.ss.formula.FormulaParser.parseNonRange(FormulaParser.java:884) at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:575) at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:311) at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1509) at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1467) at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1454) at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1827) at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1955) at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1939) at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1896) at org.apache.poi.ss.formula.FormulaParser.intersectionExpression(FormulaParser.java:1869) at org.apache.poi.ss.formula.FormulaParser.unionExpression(FormulaParser.java:1849) at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:1997) at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:170) at org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getFormulaTokens(XSSFEvaluationWorkbook.java:85) at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:315) at org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:259) at org.apache.poi.xssf.usermodel.BaseXSSFFormulaEvaluator.evaluateFormulaCellValue(BaseXSSFFormulaEvaluator.java:65) at org.apache.poi.ss.formula.BaseFormulaEvaluator.evaluateFormulaCellEnum(BaseFormulaEvaluator.java:193) at org.apache.poi.ss.formula.BaseFormulaEvaluator.evaluateAllFormulaCells(BaseFormulaEvaluator.java:268) at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateAll(XSSFFormulaEvaluator.java:92) at poi.POIDemo.main(POIDemo.java:20) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Can you attach a sample file that allows to reproduce this? Or provide self-contained a unit-test which reproduces this?
Created attachment 34358 [details] sheet to reproduce bug 60235
This test could also be added to http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/FormulaEvalTestData.xls?view=log and http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/FormulaEvalTestData_Copy.xlsx?view=log
Fixed in r1854037 Yegor *** This bug has been marked as a duplicate of bug 60980 ***