diff --git a/ClosedXML/ClosedXML/ClosedXML/ExcelHelper.cs b/ClosedXML/ClosedXML/ClosedXML/ExcelHelper.cs index 9b85972..225f52e 100644 --- a/ClosedXML/ClosedXML/ClosedXML/ExcelHelper.cs +++ b/ClosedXML/ClosedXML/ClosedXML/ExcelHelper.cs @@ -126,7 +126,7 @@ if (length == 2) return isValid && theColumn[1] >= 'A' && theColumn[1] <= 'Z'; - if (theColumn[0] < 'X') + if (theColumn[0] >= 'A' && theColumn[0] < 'X') return theColumn[1] >= 'A' && theColumn[1] <= 'Z' && theColumn[2] >= 'A' && theColumn[2] <= 'Z'; diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Misc/ExcelHelperTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Misc/ExcelHelperTests.cs index fba3eaa..a675463 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Misc/ExcelHelperTests.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Misc/ExcelHelperTests.cs @@ -28,6 +28,72 @@ { Assert.AreEqual(column, XLHelper.GetColumnNumberFromLetter(XLHelper.GetColumnLetterFromNumber(column))); } - + + [TestMethod] + public void PlusAA1_Is_Not_an_address() + { + Assert.IsFalse(XLHelper.IsValidA1Address("+AA1")); + } + + [TestMethod] + public void ValidA1Addresses() + { + Assert.IsTrue(XLHelper.IsValidA1Address("A1")); + Assert.IsTrue(XLHelper.IsValidA1Address("A" + XLHelper.MaxRowNumber )); + Assert.IsTrue(XLHelper.IsValidA1Address("Z1")); + Assert.IsTrue(XLHelper.IsValidA1Address("Z" + XLHelper.MaxRowNumber)); + + Assert.IsTrue(XLHelper.IsValidA1Address("AA1")); + Assert.IsTrue(XLHelper.IsValidA1Address("AA" + XLHelper.MaxRowNumber)); + Assert.IsTrue(XLHelper.IsValidA1Address("ZZ1")); + Assert.IsTrue(XLHelper.IsValidA1Address("ZZ" + XLHelper.MaxRowNumber)); + + Assert.IsTrue(XLHelper.IsValidA1Address("AAA1")); + Assert.IsTrue(XLHelper.IsValidA1Address("AAA" + XLHelper.MaxRowNumber)); + Assert.IsTrue(XLHelper.IsValidA1Address(XLHelper.MaxColumnLetter + "1")); + Assert.IsTrue(XLHelper.IsValidA1Address(XLHelper.MaxColumnLetter + XLHelper.MaxRowNumber)); + } + + [TestMethod] + public void InvalidA1Addresses() + { + Assert.IsFalse(XLHelper.IsValidA1Address("")); + Assert.IsFalse(XLHelper.IsValidA1Address("A")); + Assert.IsFalse(XLHelper.IsValidA1Address("a")); + Assert.IsFalse(XLHelper.IsValidA1Address("1")); + Assert.IsFalse(XLHelper.IsValidA1Address("-1")); + Assert.IsFalse(XLHelper.IsValidA1Address("AAAA1")); + Assert.IsFalse(XLHelper.IsValidA1Address("XFG1")); + + Assert.IsFalse(XLHelper.IsValidA1Address("@A1")); + Assert.IsFalse(XLHelper.IsValidA1Address("@AA1")); + Assert.IsFalse(XLHelper.IsValidA1Address("@AAA1")); + Assert.IsFalse(XLHelper.IsValidA1Address("[A1")); + Assert.IsFalse(XLHelper.IsValidA1Address("[AA1")); + Assert.IsFalse(XLHelper.IsValidA1Address("[AAA1")); + Assert.IsFalse(XLHelper.IsValidA1Address("{A1")); + Assert.IsFalse(XLHelper.IsValidA1Address("{AA1")); + Assert.IsFalse(XLHelper.IsValidA1Address("{AAA1")); + + Assert.IsFalse(XLHelper.IsValidA1Address("A1@")); + Assert.IsFalse(XLHelper.IsValidA1Address("AA1@")); + Assert.IsFalse(XLHelper.IsValidA1Address("AAA1@")); + Assert.IsFalse(XLHelper.IsValidA1Address("A1[")); + Assert.IsFalse(XLHelper.IsValidA1Address("AA1[")); + Assert.IsFalse(XLHelper.IsValidA1Address("AAA1[")); + Assert.IsFalse(XLHelper.IsValidA1Address("A1{")); + Assert.IsFalse(XLHelper.IsValidA1Address("AA1{")); + Assert.IsFalse(XLHelper.IsValidA1Address("AAA1{")); + + Assert.IsFalse(XLHelper.IsValidA1Address("@A1@")); + Assert.IsFalse(XLHelper.IsValidA1Address("@AA1@")); + Assert.IsFalse(XLHelper.IsValidA1Address("@AAA1@")); + Assert.IsFalse(XLHelper.IsValidA1Address("[A1[")); + Assert.IsFalse(XLHelper.IsValidA1Address("[AA1[")); + Assert.IsFalse(XLHelper.IsValidA1Address("[AAA1[")); + Assert.IsFalse(XLHelper.IsValidA1Address("{A1{")); + Assert.IsFalse(XLHelper.IsValidA1Address("{AA1{")); + Assert.IsFalse(XLHelper.IsValidA1Address("{AAA1{")); + } } }