C#如何迭代excel列



我想获得excel工作表的特定列,然后遍历它的单元格。我希望它看起来像这样:

Excel.Workbook workbook = app.Workbooks.Open(svDropPath);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)workbook.Sheets["Sheet Name"];
var col = xlWorkSheet.UsedRange.Columns["C:C", Type.Missing]; // I want the 3rd column
foreach(Cell c in col)
....

我该如何做这个前臂循环?

您的循环如下所示:

    foreach (Excel.Range item in col.Cells)
    {
        //whatever you want to do with your cells, here- msgbox of cells value
        MessageBox.Show(Convert.ToString(item.Value));
    }

我相信除了循环遍历有问题的索引并使用Cells或Rows:之外,没有什么好方法可以做到这一点

for (int i = 1; i <= max; i++)
{
  Range cell = col.Cells[i, 1];
  // or
  Range cell = col.Rows[i];
}

但是,请注意,如果您正在读取和/或写入所有单元格,则最好将整列读取到对象数组/从对象数组写入整列,然后循环遍历数组项,如我的回答中所述https://stackoverflow.com/a/18058144/1737957。这不仅要快得多,而且还可以使用更好的语言结构进行循环,因为您现在正在处理一个简单的C#数组。

你必须循环而不是执行AFAIK的唯一原因是,如果你访问的是条件格式等,而不仅仅是单元格内容,并且你不能在一个语句中写入所有这些内容。然而,也有一些方法可以使用数组来实现这些功能。

最新更新