https://bz.apache.org/bugzilla/show_bug.cgi?id=60235
Bug ID: 60235
Summary: Intersection arguments to worksheet function in
FormulaEvaluator
Product: POI
Version: 3.15-FINAL
Hardware: PC
Status: NEW
Severity: normal
Priority: P2
Component: XSSF
Assignee: [email protected]
Reporter: [email protected]
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)
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]