Символьный инкремент или наименования столбцов эксель - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Хочу сделать определение наименование столбца Excel по заданному исходному столбцу и смещению. Например, задан столбец A:A, смещение 1, на выходе B:B. столбец Z:Z, смещение 1, выход AA:AA. столбец Y:Y, смещение 3, выход AB:AB. Задачу предполагается решить без создания объекта Excel (точнее до его создания). Вариант решения задачи: 1. Символьное обозначение столбца рассматривать как число в 26-ричной системе счисления. 2. Перевести это число в 10-ричное; 3. Прибавить к 10-ному число смещение; 4. Получившееся число перевести обратно в 26-ричное, т.е. символьное обозначение числа. И тут у меня возникает много вопросов - в обозначении столбцов нет 0 (если A рассматривать как 0, тогда получаются странные колонки в эксель - с лидирующим 0, обычно таких чисел в СС не бывает?). Т.е. основа системы счисления всё-таки - 26 или 27? Если в результате сложения 10ного числа и обратном переводе получится на какой-то позиции 0 (если A принять за 1), что делать? В общем, буду рад любым подсказкам по решению проблемы в заданном направлении, либо альтернативным идеям Может быть, опять велосипед изобретается ?

Решение задачи: «Символьный инкремент или наименования столбцов эксель»

textual
Листинг программы
static string ColumnIndexToColumnLetter(int colIndex)
{
    int div = colIndex;
    string colLetter = String.Empty;
    int mod = 0;
 
    while (div > 0)
    {
        mod = (div - 1) % 26;
        colLetter = (char)(65 + mod) + colLetter;
        div = (int)((div - mod) / 26);
    }
    return colLetter;
}

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы