C# - 如何迭代Excel._Worksheet中的所有行?

P.B*_*key 20 c# excel excel-2007 excel-interop

我期待以编程方式从Excel工作表中提取数据并将其插入到数据库表中.

如何确定工作表中的列数和行数或以其他方式迭代行?

我有

Excel._Worksheet worksheet = (Excel._Worksheet)workbook.ActiveSheet;
Run Code Online (Sandbox Code Playgroud)

我试过了 worksheet.Range.Rows.Count

哪个扔了

索引属性"Microsoft.Office.Interop.Excel._Worksheet.Range"具有必须提供的非可选参数

需要做什么?

nic*_*ous 36

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这个编译和运行对我来说很棒!我正在使用它将缺少字段的行提取到错误日志中.

  • 请注意,此方法对于很多用途来说可能太慢,在迭代之前将整个范围转换为对象数组会加快速度。 (2认同)

Dav*_*nan 18

我认为你实际上是在寻找最后一行.在这种情况下,你需要像这样写:

Range UsedRange = worksheet.UsedRange;
int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;
Run Code Online (Sandbox Code Playgroud)