C # Как я могу преобразовать адрес ячеек Excel в следующей записи: «LetterNumber» в «Number, Number» и наоборот? - PullRequest
0 голосов
/ 03 октября 2018

Как мне преобразовать адрес ячеек Excel в следующей записи: «LetterNumber» в «Number, Number» и наоборот?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Хорошо, даже если вопрос не был ясен, вот ответ для:

Как я могу преобразовать адрес ячеек Excel в следующей записи: «LetterNumber» в «Number, Number»"и наоборот?

private const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

public static string ToExcelCoordinates(string coordinates)
{
    string first = coordinates.Substring(0, coordinates.IndexOf(','));
    int i = int.Parse(first);
    string second = coordinates.Substring(first.Length + 1);

    string str = string.Empty;
    while (i > 0)
    {
        str = ALPHABET[(i - 1) % 26] + str;
        i /= 26;
    }

    return str + second;
}

public static string ToNumericCoordinates(string coordinates)
{
    string first = string.Empty;
    string second = string.Empty;

    CharEnumerator ce = coordinates.GetEnumerator();
    while (ce.MoveNext())
        if (char.IsLetter(ce.Current))
            first += ce.Current;
        else
            second += ce.Current;

    int i = 0;
    ce = first.GetEnumerator();
    while (ce.MoveNext())
        i = (26 * i) + ALPHABET.IndexOf(ce.Current) + 1;

    string str = i.ToString();
    return str + "," + second;
}

Результаты:

" 1,1 "->" A1 "
"A1" -> "1,1"
"42,231" -> "AP231"
"AP231" -> "42,231"

0 голосов
/ 03 октября 2018

Я пытаюсь установить значение Worksheet.Cells [], но оно не поддерживает значения типа «B3»

Worksheet.Rangeделает:

Worksheet.Range("A4").Value = "Foo";

Я бы также посоветовал вам не устанавливать одну ячейку за раз, если вы можете помочь.Каждый вызов Cells или Range при медленном вызове взаимодействия, так что вы получите гораздо лучшую производительность, если вы поместите свои значения в массив и задаете значение всего диапазона за один раз:

int[,] values;
// fill values with integers
Worksheet.Range("A1","D4") = values;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...