Что алгоритм должен преобразовать Excel Column Letter в свое Число?

Рекомендация второго литба. Мне пришлось сделать это в последнее время, чтобы напечатать дерево VAD процесса Windows, и я использовал язык DOT (просто распечатайте узлы из функции бинарного дерева):

http: //en.wikipedia .org / wiki / DOT_language

Например, ваш файл DOT будет содержать:

digraph graphname {
     5 -> 3;
     5 -> 8;
     3 -> 4;
     3 -> 2;
}

Вы создаете график с помощью dotty.exe или конвертируете его в PNG, используя dot.exe.

58
задан Ian Nelson 20 March 2009 в 21:17
поделиться

5 ответов

public static int ExcelColumnNameToNumber(string columnName)
{
    if (string.IsNullOrEmpty(columnName)) throw new ArgumentNullException("columnName");

    columnName = columnName.ToUpperInvariant();

    int sum = 0;

    for (int i = 0; i < columnName.Length; i++)
    {
        sum *= 26;
        sum += (columnName[i] - 'A' + 1);
    }

    return sum;
}
108
ответ дан Ian Nelson 7 November 2019 в 15:15
поделиться
int result = colName.Select((c, i) =>
    ((c - 'A' + 1) * ((int)Math.Pow(26, colName.Length - i - 1)))).Sum();
16
ответ дан mqp 7 November 2019 в 15:15
поделиться
int col = colName.ToCharArray().Select(c => c - 'A' + 1).
          Reverse().Select((v, i) => v * (int)Math.Pow(26, i)).Sum();
7
ответ дан wethercotes 7 November 2019 в 15:15
поделиться

Цикл через символы от в последний раз до сначала. Умножьте значение каждой буквы (A=1, Z=26) времена 26 ** N, добавьте к рабочему общему количеству. Мой навык обработки строк в C# не существует, таким образом, вот некоторый очень смешанный псевдокод:

sum=0;
len=length(letters);
for(i=0;i<len;i++)
  sum += ((letters[len-i-1])-'A'+1) * pow(26,i);
5
ответ дан Sparr 7 November 2019 в 15:15
поделиться

Вы могли, возможно, рассматривать его как основа 26 чисел и затем заменить буквами основу 26 чисел?

Поэтому в действительности, Ваше право большая часть цифры всегда будет необработанным числом между 1 и 26, и остаток от "числа" (левая часть) является количеством 26, собрался? Таким образом, A представил бы одну партию 26, B будет 2, и т.д.

Как пример:

B = 2 = Column 2
AB = 26 * 1(A) + 2 = Column 28
BB = 26 * 2(B) + 2 = Column 54
DA = 26 * 4(D) + 1 = Column 105

и т.д.

3
ответ дан Chris 7 November 2019 в 15:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: