mirror of https://github.com/apache/poi.git
Fix bug #50718 - More helpful error message when you try to create a CellReference with #REF!
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1078039 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
972b316e1b
commit
3cd79ea026
|
@ -34,6 +34,7 @@
|
|||
|
||||
<changes>
|
||||
<release version="3.8-beta2" date="2011-??-??">
|
||||
<action dev="poi-developers" type="fix">50718 - More helpful error message when you try to create a CellReference with #REF!</action>
|
||||
<action dev="poi-developers" type="fix">50784 - XSSFColors return by XSSFFont now have theme information applied to them</action>
|
||||
<action dev="poi-developers" type="fix">50846 - Improve how XSSFColor inherits from Themes</action>
|
||||
<action dev="poi-developers" type="fix">50847 - XSSFFont now accepts the full range of Charsets from FontChartset</action>
|
||||
|
|
|
@ -85,6 +85,10 @@ public class CellReference {
|
|||
* delimited and escaped as per normal syntax rules for formulas.
|
||||
*/
|
||||
public CellReference(String cellRef) {
|
||||
if(cellRef.endsWith("#REF!")) {
|
||||
throw new IllegalArgumentException("Cell reference invalid: " + cellRef);
|
||||
}
|
||||
|
||||
String[] parts = separateRefParts(cellRef);
|
||||
_sheetName = parts[0];
|
||||
String colRef = parts[1];
|
||||
|
@ -335,7 +339,6 @@ public class CellReference {
|
|||
* name still in ALPHA-26 number format. The third element is the row.
|
||||
*/
|
||||
private static String[] separateRefParts(String reference) {
|
||||
|
||||
int plingPos = reference.lastIndexOf(SHEET_NAME_DELIMITER);
|
||||
String sheetName = parseSheetName(reference, plingPos);
|
||||
int start = plingPos+1;
|
||||
|
|
|
@ -231,7 +231,7 @@ public final class TestHSSFName extends BaseTestNamedRange {
|
|||
try {
|
||||
new AreaReference(name2.getRefersToFormula());
|
||||
fail("attempt to supply an invalid reference to AreaReference constructor results in exception");
|
||||
} catch (StringIndexOutOfBoundsException e) { // TODO - use a different exception for this condition
|
||||
} catch (IllegalArgumentException e) { // TODO - use a stronger typed exception for this condition
|
||||
// expected during successful test
|
||||
}
|
||||
}
|
||||
|
|
|
@ -193,6 +193,23 @@ public final class TestCellReference extends TestCase {
|
|||
confirmCrInRange(false, "A", "0", v2007);
|
||||
}
|
||||
|
||||
public void testInvalidReference() {
|
||||
try {
|
||||
new CellReference("Sheet1!#REF!");
|
||||
fail("Shouldn't be able to create a #REF! refence");
|
||||
} catch(IllegalArgumentException e) {}
|
||||
|
||||
try {
|
||||
new CellReference("'MySheetName'!#REF!");
|
||||
fail("Shouldn't be able to create a #REF! refence");
|
||||
} catch(IllegalArgumentException e) {}
|
||||
|
||||
try {
|
||||
new CellReference("#REF!");
|
||||
fail("Shouldn't be able to create a #REF! refence");
|
||||
} catch(IllegalArgumentException e) {}
|
||||
}
|
||||
|
||||
private static void confirmCrInRange(boolean expResult, String colStr, String rowStr,
|
||||
SpreadsheetVersion sv) {
|
||||
if (expResult == CellReference.cellReferenceIsWithinRange(colStr, rowStr, sv)) {
|
||||
|
|
Loading…
Reference in New Issue