如何获取所有包含Excel中的特定列中的数据的行从C#

我在Excel中有一个数据集,正在使用C#打开工作表并访问一些数据。

我正在尝试获取包含来自特定列的数据的所有行。 例如,在从单元格“B3”开始向下的列B ,我想将包含数据的所有行存储在集合中,例如数组。

这是我迄今为止:

 Application excelApplication; _Workbook workbook; _Worksheet sheet; excelApplication = new Excel.Application { Visible = true, ScreenUpdating = true }; workbook = excelApplication.Workbooks.Open(@"C:\Documents and Settings\user\Desktop\Book1.xls"); sheet = (Worksheet)workbook.Worksheets[2]; Excel.Range range = sheet.Range["b3:b145"]. foreach (Range cell in range) { // Do something with rows which contain data } 

正如你在上面看到的,我已经指定了从B3到B45的范围,这是我不想要的。 我想获取B列中所有包含从B3开始的数据的行。

我将如何实现这一目标?

一般来说,当我遇到这种情况时,我logging一个macros,并将VBA代码转换为C#。 VSTO中的对象模型几乎完全一样(请记住这是一个很好的提示),使用.Net 4.0和可选参数可以节省大量代码。

在您的具体情况下,我设想电子表格越大,使用VSTO读取列B中的所有Excel单元所需的时间就越长。 我的build议是使用这种技术一次读取它们:

 //Work out the number of rows with data in column B: //int lastColumn = range.Columns.Count; int lastRow = range.Rows.Count; //Get all the column values: object[,] objectArray = shtName.get_Range("B3:B" + lastRow.ToString()).Value2; rngName.Value2 = objectArray;