C#如何迭代excel列

时间:2013-08-05 12:01:28

标签: 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循环?

2 个答案:

答案 0 :(得分:6)

您的循环将如下所示:

    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));
    }

答案 1 :(得分:3)

我认为除了循环使用相关指数并使用细胞或行之外,没有其他方法可以做到这一点:

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的唯一原因是,如果您正在访问条件格式等内容,而不仅仅是单元格内容,并且您无法在一个语句中编写它们的全部范围。但是,使用数组也可能有这样做的方法。