C # - Как мне перебрать все строки в Excel._Worksheet? - PullRequest
19 голосов
/ 11 октября 2011

Я хочу программно извлечь данные из листа Excel и вставить их в таблицу базы данных.

Как определить количество столбцов и строк на рабочем листе или выполнить итерацию строк другим способом?

У меня есть

Excel._Worksheet worksheet = (Excel._Worksheet)workbook.ActiveSheet;

Я пытался worksheet.Range.Rows.Count

который бросает

Индексируемое свойство 'Microsoft.Office.Interop.Excel._Worksheet.Range' имеет необязательные аргументы, которые должны быть предоставлены

Что нужно сделать?

Ответы [ 3 ]

34 голосов
/ 02 октября 2012
public void IterateRows(Excel.worksheet worksheet)
{
    //Get the used Range
    Excel.Range usedRange = worksheet.UsedRange;

    //Iterate the rows in the used range
    foreach(Excel.Range row in usedRange.Rows)
    {
        //Do something with the row.

        //Ex. Iterate through the row's data and put in a string array
        String[] rowData = new String[row.Columns.Count];
        for(int i = 0; i < row.Columns.Count; i++)
            rowData[i] = row.Cells[1, i + 1].Value2.ToString();
    }
}

Это компилируется и работает просто отлично для меня! Я использую его для извлечения строк с пропущенными полями в журнал ошибок.

18 голосов
/ 11 октября 2011

Полагаю, вы действительно ищете последний использованный ряд. В этом случае вам нужно написать это так:

Range UsedRange = worksheet.UsedRange;
int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;
2 голосов
/ 11 октября 2011

Посмотрите на свойство UsedRange в Excel.

...