From: Jason Height Date: Mon, 28 Aug 2006 12:18:10 +0000 (+0000) Subject: bug 31044: Corrected parsing of references which contain double sheet names ie 'Sheet... X-Git-Tag: REL_3_0_ALPHA3~39 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4859068eb4915c534d610cb3c13ddc0f91a1052d;p=poi.git bug 31044: Corrected parsing of references which contain double sheet names ie 'Sheet 1'!F1:'Sheet 1'!F10. Although i have hacked it a bit such that it gets translated to 'Sheet 1'!F1:F10 git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@437684 13f79535-47bb-0310-9956-ffa450edef68 --- 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)); }