Bug 60235 - Intersection arguments to worksheet function in FormulaEvaluator
Summary: Intersection arguments to worksheet function in FormulaEvaluator
Status: RESOLVED DUPLICATE of bug 60980
Alias: None
Product: POI
Classification: Unclassified
Component: XSSF (show other bugs)
Version: 3.15-FINAL
Hardware: PC All
: P2 normal (vote)
Target Milestone: ---
Assignee: POI Developers List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-10-10 15:55 UTC by asfbz
Modified: 2019-02-24 12:56 UTC (History)
0 users



Attachments
sheet to reproduce bug 60235 (10.38 KB, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)
2016-10-11 15:25 UTC, asfbz
Details

Note You need to log in before you can comment on or make changes to this bug.
Description asfbz 2016-10-10 15:55:30 UTC
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)
Comment 1 Dominik Stadler 2016-10-11 14:37:22 UTC
Can you attach a sample file that allows to reproduce this? 

Or provide self-contained a unit-test which reproduces this?
Comment 2 asfbz 2016-10-11 15:25:21 UTC
Created attachment 34358 [details]
sheet to reproduce bug 60235
Comment 4 Yegor Kozlov 2019-02-24 12:56:25 UTC
Fixed in r1854037

Yegor

*** This bug has been marked as a duplicate of bug 60980 ***