Beispiel #1
0
        private static string GetExcelPictureNumberFormat(string format)
        {
            string        text          = format.ToUpperInvariant();
            StringBuilder stringBuilder = new StringBuilder();

            for (int i = 0; i < format.Length; i++)
            {
                switch (format[i])
                {
                case '"':
                case '\'':
                {
                    char c = format[i];
                    stringBuilder.Append('"');
                    i++;
                    bool flag = false;
                    while (i < format.Length)
                    {
                        if (format[i] != c)
                        {
                            stringBuilder.Append(format[i]);
                            i++;
                            continue;
                        }
                        flag = true;
                        break;
                    }
                    if (flag)
                    {
                        stringBuilder.Append('"');
                    }
                    break;
                }

                case 'E':
                case 'e':
                    stringBuilder.Append(format[i]);
                    if (i + 1 < format.Length && format[i + 1] == '0')
                    {
                        stringBuilder.Append('-');
                    }
                    break;

                case '\\':
                    if (i + 1 < format.Length && format[i + 1] == '\'')
                    {
                        stringBuilder.Append("\\'");
                        i++;
                    }
                    else if (i + 1 < format.Length && format[i + 1] == '"')
                    {
                        stringBuilder.Append("\\005c\"");
                        i++;
                    }
                    else
                    {
                        stringBuilder.Append('"');
                        stringBuilder.Append(format[i]);
                        stringBuilder.Append('"');
                    }
                    break;

                case '*':
                case '_':
                    stringBuilder.Append('"');
                    stringBuilder.Append(format[i]);
                    stringBuilder.Append('"');
                    break;

                default:
                    if (FormatHandler.NeedNumberEscape(text[i]))
                    {
                        stringBuilder.Append('"');
                        stringBuilder.Append(format[i]);
                        stringBuilder.Append('"');
                    }
                    else
                    {
                        stringBuilder.Append(format[i]);
                    }
                    break;
                }
            }
            return(stringBuilder.ToString());
        }