如何遍历Excel工作表只从特定列中提取数据

你如何迭代通过一个Excel工作簿与多个工作表只提取说专栏“C”,“E”和“F”的数据?

这是我到目前为止的代码:

public static string ExtractData(string filePath) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook workBook = excelApp.Workbooks.Open(filePath); string data = string.Empty; int i = 0; foreach (Excel.Worksheet sheet in workBook.Worksheets) { data += "******* Sheet " + i++.ToString() + " ********\n"; //foreach (Excel.Range row in sheet.UsedRange.Rows) //{ // data += row.Range["C"].Value.ToString(); //} foreach (Excel.Range row in sheet.UsedRange.Rows) { foreach (Excel.Range cell in row.Columns) { data += cell.Value + " "; } data += "\n"; } } excelApp.Quit(); return data; } 

非常感谢您的时间,任何帮助表示赞赏。

编辑你的方法,这里应该做你想要的东西:

 public static string ExtractData(string filePath) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook workBook = excelApp.Workbooks.Open(filePath); int[] Cols = { 3, 5, 6 }; //Columns to loop //C, E, F string data = string.Empty; int i = 0; foreach (Excel.Worksheet sheet in workBook.Worksheets) { data += "******* Sheet " + i++.ToString() + " ********\n"; foreach (Excel.Range row in sheet.UsedRange.Rows) { foreach (int c in Cols) //changed here to loop through columns { data += sheet.Cells[row.Row, c].Value2.ToString() + " "; } data += "\n"; } } excelApp.Quit(); return data; } 

我已经创build了一个int数组来指示要从哪个列读取数据,然后在每一行中循环访问数组。

HTH,Z

你可以使用这样的东西来获得列C例如:

 var numberOfRows = sheet.UsedRange.Columns[3, Type.Missing].Rows.Count; var values = sheet.Range["C1:C" + numberOfRows].Value2; 

numberOfRows保存在工作表中的行数(我认为它不会跳过顶部tho空白行,不知道)。 之后,您可以select从C1到CN的范围,并获取包含这些值的值2。 请注意,values数组实际上是一个二维数组。 你现在可以轻松地做一个for循环来获取项目:

 for (int i = 1; i <= values.Length; i++){ sb.Append(values[i, 1] + " "); } 

这可以优化,以防列相邻等,但上面的代码应该让你开始。