Символьный инкремент или наименования столбцов эксель - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д