Как перебрать Excel.Range с индексом в c # - PullRequest
0 голосов
/ 04 марта 2019

Я пишу AC # Add для Excel, который берет значения из столбца таблицы Excel и выполняет некоторые операции.Это часть кода, который я написал:

        Excel.Range aqRange = currentSheet.Range["C3:C" + cRowCount];
        Excel.Range vcRange = currentSheet.Range["D3:D" + cRowCount];
        Excel.Range k0R = currentSheet.Range["F2"];
        double[] sgVett = new double[cRowCount];

        foreach (Range aq in aqRange)
        {
            if (i == 0) sgVett[i] = k0R.Value + aq.Value;
            else sgVett[i] = sgVett[i - 1] + aq.Value;
            i++;
        }
        i = 0;

        foreach (Range vc in vcRange)
        {
            if (i == 0) sgVett[i] -= vc.Value;
            else sgVett[i] -= vc.Value;
            i++;
        }

Я хочу знать, есть ли способ сделать что-то вроде этого:

for(int j = 0; j<cRowCount; j++) {
    if (i == 0) sgVett[i] = k0R.Value + aqRange[i].Value;
    else sgVett[i] = sgVett[i - 1] + aqRange[i].Value;
}

Я знаю, что могу 'Excel.Range можно использовать как вектор, но есть ли способ использовать индекс для прокрутки aqRange и vcRange или, по крайней мере, если можно использовать только один for или один foreach вместодва (как я сделал).

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете использовать свойство Range Cells , немного похожее на двумерный массив.

Важно отметить, что хотя используемый синтаксис похож на двумерный массив C # (Cells [RowIndex, ColIndex]), свойство Cells обращается к COM-объекту, который использует 1 в качестве начального смещения, а не 0.

Так что вы должны иметь возможность написать что-то вроде:

for(int j = 1; j<=cRowCount; j++)
{
    if (i == 0) sgVett[i] = k0R.Value + aqRange.Cells[j,1].Value;
}

Также см. Здесь: Самый быстрый способ получить диапазон строк в Excel & Как получить диапазон Excel, используя номера строк и столбцов в VSTO / C #?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...