diff options
-rw-r--r-- | src/java/org/apache/poi/hssf/model/FormulaParser.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/java/org/apache/poi/hssf/model/FormulaParser.java b/src/java/org/apache/poi/hssf/model/FormulaParser.java index 0be6488e68..816b044512 100644 --- a/src/java/org/apache/poi/hssf/model/FormulaParser.java +++ b/src/java/org/apache/poi/hssf/model/FormulaParser.java @@ -290,8 +290,19 @@ public class FormulaParser { if (look == ':') { Match(':'); String second=GetName(); - - tokens.add(new Area3DPtg(first+":"+second,externIdx)); + if (look == '!') { + //The sheet name was included in both of the areas. Only really + //need it once + Match('!'); + String third=GetName(); + + if (!sheetName.equals(second)) + throw new RuntimeException("Unhandled double sheet reference."); + + tokens.add(new Area3DPtg(first+":"+third,externIdx)); + } else { + tokens.add(new Area3DPtg(first+":"+second,externIdx)); + } } else { tokens.add(new Ref3DPtg(first,externIdx)); } |