Символьный инкремент или наименования столбцов эксель - 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
Листинг программы
  1. static string ColumnIndexToColumnLetter(int colIndex)
  2. {
  3.     int div = colIndex;
  4.     string colLetter = String.Empty;
  5.     int mod = 0;
  6.  
  7.     while (div > 0)
  8.     {
  9.         mod = (div - 1) % 26;
  10.         colLetter = (char)(65 + mod) + colLetter;
  11.         div = (int)((div - mod) / 26);
  12.     }
  13.     return colLetter;
  14. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы