Столбец No к Букве столбца в Excel/VSTO, использующем C#

Как найти название или заголовок столбца?

Например, если я выбираю столбец 5 в средствах Excel, я хочу результат как "E". Как получить алфавит или соответствие буквы столбцу нет.

Помогите мне с кодом

5
задан venkat 26 March 2010 в 11:07
поделиться

3 ответа

Как насчет использования Application.ActiveCell.get_Address (true, true, Excel.AlReferenceStyle.xlA1, missing, missing) , а затем проанализировать строку результата или использовать RegEx для получения заголовка столбца?

Я просто использовал:

string location = Application.ActiveCell.get_Address(true, true, Excel.AlReferenceStyle.xlA1, missing, missing);
string tokens = x.Split("$".ToCharArray());
MessageBox.Show(String.Format("Column {0}", result[0]));
2
ответ дан 14 December 2019 в 04:34
поделиться
public static string GetColumnName(int columnNumber)
{
    const string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    string columnName = "";

    while (columnNumber > 0)
    {
        columnName = letters[(columnNumber - 1) % 26] + columnName;
        columnNumber = (columnNumber - 1) / 26;
    }

    return columnName;
}
5
ответ дан 14 December 2019 в 04:34
поделиться

Ниже приведен полный метод, который дает вам соответствующий алфавит для переданного целочисленного значения.

private String Number2String(int number, bool isCaps)
    {
        int number1 = number / 27;
        int number2 = number - (number1 * 26);
        if (number2 > 26)
        {
            number1 = number1 + 1;
            number2 = number - (number1 * 26);
        }
        Char a = (Char)((isCaps ? 65 : 97) + (number1 - 1));
        Char b = (Char)((isCaps ? 65 : 97) + (number2 - 1));
        Char c = (Char)((isCaps ? 65 : 97) + (number - 1));
        string d = String.Concat(a, b);
        if (number <= 26)
            return c.ToString();
        else
            return d;
    }
0
ответ дан 14 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

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