web-dev-qa-db-ja.com

C#-Excel._Worksheetのすべての行を反復するにはどうすればよいですか?

Excelワークシートからプログラムでデータを取得し、データベーステーブルに挿入したいと考えています。

ワークシートの列と行の数を決定する方法、または行を反復する方法

私が持っています

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

私は試した worksheet.Range.Rows.Count

投げる

インデックス付きプロパティ「Microsoft.Office.Interop.Excel._Worksheet.Range」には、オプションの引数を指定する必要があります

何をする必要がありますか?

19
P.Brian.Mackey

実際に最後に使用した行を探していると思います。その場合、次のように記述する必要があります。

Range UsedRange = worksheet.UsedRange;
int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;
18
David Heffernan
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();
    }
}

これはコンパイルして実行するのに最適です!不足しているフィールドを持つ行をエラーログに抽出するために使用しています。

35
nicholeous

Excelの sedRange プロパティをご覧ください。

2
Tim Lentine