https://bz.apache.org/bugzilla/show_bug.cgi?id=58648
Bug ID: 58648 Summary: FormulaParser throws exception in parseSimpleFactor() when getCellFormula() is called on a cell and the formula contains spaces between closing parentheses ") )" Product: POI Version: 3.13-FINAL Hardware: PC Status: NEW Severity: critical Priority: P2 Component: SS Common Assignee: dev@poi.apache.org Reporter: apa...@rpdavison.ca To reproduce: Define an XSSFCell with a formula like: "((1 + 1) )". Note the extra space between the closing parentheses. Or create a spreadsheet with a cell with the formula specified above, save it and then read it in as a workbook. Navigate via POI to the sheet, row, and cell in question. Call getCellFormula() on the cell. Results in an exception: org.apache.poi.ss.formula.FormulaParseException: Parse error near char ... ')' in specified formula '((1 + 1) )'. Expected cell ref or constant literal at org.apache.poi.ss.formula.FormulaParser.expected(FormulaParser.java:208) at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1148) at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1103) at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1090) at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1450) at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1570) at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1554) at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1511) at org.apache.poi.ss.formula.FormulaParser.intersectionExpression(FormulaParser.java:1499) at org.apache.poi.ss.formula.FormulaParser.unionExpression(FormulaParser.java:1472) at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1131) at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1103) at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1090) at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1450) at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1570) at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1554) at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1511) at org.apache.poi.ss.formula.FormulaParser.Arguments(FormulaParser.java:1076) at org.apache.poi.ss.formula.FormulaParser.function(FormulaParser.java:963) at org.apache.poi.ss.formula.FormulaParser.parseNonRange(FormulaParser.java:556) at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:524) at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:257) at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1143) at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1103) at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1090) at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1450) at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1570) at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1554) at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1511) at org.apache.poi.ss.formula.FormulaParser.intersectionExpression(FormulaParser.java:1492) at org.apache.poi.ss.formula.FormulaParser.unionExpression(FormulaParser.java:1472) at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:1612) at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:153) at org.apache.poi.xssf.usermodel.XSSFCell.convertSharedFormula(XSSFCell.java:421) at org.apache.poi.xssf.usermodel.XSSFCell.getCellFormula(XSSFCell.java:393) Remove the white space between the two closing parentheses and the exception goes away. Proposed fix: Add an additional call to "SkipWhite()" before the call to "Match(')');" inside the case for '('. Near line 1130 in parseSimpleFactor method of FormulaParser.java (release version 3.13). -- 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