예제 #1
0
        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);
            }
        }