public XLRangeAddress(XLWorksheet worksheet, String rangeAddress) { string addressToUse = rangeAddress.Contains("!") ? rangeAddress.Substring(rangeAddress.IndexOf("!") + 1) : rangeAddress; string firstPart; string secondPart; if (addressToUse.Contains(':')) { var arrRange = addressToUse.Split(':'); firstPart = arrRange[0]; secondPart = arrRange[1]; } else { firstPart = addressToUse; secondPart = addressToUse; } if (XLHelper.IsValidA1Address(firstPart)) { FirstAddress = XLAddress.Create(worksheet, firstPart); LastAddress = XLAddress.Create(worksheet, secondPart); } else { firstPart = firstPart.Replace("$", String.Empty); secondPart = secondPart.Replace("$", String.Empty); if (char.IsDigit(firstPart[0])) { FirstAddress = XLAddress.Create(worksheet, "A" + firstPart); LastAddress = XLAddress.Create(worksheet, XLHelper.MaxColumnLetter + secondPart); } else { FirstAddress = XLAddress.Create(worksheet, firstPart + "1"); LastAddress = XLAddress.Create(worksheet, secondPart + XLHelper.MaxRowNumber.ToInvariantString()); } } Worksheet = worksheet; }
internal static string EscapeSheetName(this String sheetName) { if (String.IsNullOrEmpty(sheetName)) { return(sheetName); } var needEscape = (!Char.IsLetter(sheetName[0]) && sheetName[0] != '_') || XLHelper.IsValidA1Address(sheetName) || XLHelper.IsValidRCAddress(sheetName) || sheetName.Any(c => (Char.IsPunctuation(c) && c != '.' && c != '_') || Char.IsSeparator(c) || Char.IsControl(c) || Char.IsSymbol(c)); if (needEscape) { return(String.Concat('\'', sheetName.Replace("'", "''"), '\'')); } else { return(sheetName); } }