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