在Excel中查询Excel表格

我想用c#读取Excel文件,使用下面的代码

string excelFileName = "Book2.xls"; string excelConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Book2.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; //string excelConnectString = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + excelFileName + ";" + "Extended Properties = Excel 8.0; HDR=Yes;IMEX=1"; OleDbConnection objConn = new OleDbConnection(excelConnectString); OleDbCommand objCmd = new OleDbCommand("Select * From [Sheet1$]", objConn); OleDbDataAdapter objDatAdap = new OleDbDataAdapter(); objDatAdap.SelectCommand = objCmd; DataSet ds = new DataSet(); objDatAdap.Fill(ds); 

在这里输入图像说明

一切工作正常。现在我的要求是阅读下面的Excel文件

 SELECT A,B,D From [Sheet1]; 

如果要将A1读取到D1,Select-command应如下所示:

 SELECT * FROM [SHEETNAME_HERE$A1:D1] 

整个代码:

  OleDbConnection con = new OleDbConnection( "provider=Microsoft.Jet.OLEDB.4.0;data source=" + XLS_FILE_NAME_AND_PATH_HERE + ";Extended Properties=Excel 8.0;"); StringBuilder stbQuery = new StringBuilder(); stbQuery.Append("SELECT * FROM [" + SHEETNAME_HERE + "$A1:D1]"); OleDbDataAdapter adp = new OleDbDataAdapter(stbQuery.ToString(), con); DataSet dsXLS = new DataSet(); adp.Fill(dsXLS); DataView dvEmp = new DataView(dsXLS.Tables[0]); dataGridView1.DataSource = dvEmp; 
 DataTable Contents = new DataTable(); using (OleDbDataAdapter adapter = new OleDbDataAdapter("Select * From [Sheet1$]", objConn)) { adapter.Fill(Contents); } Console.WriteLine(Contents.Rows[0][0]); 

您可以通过传递适当的索引来select特定的单元格。

你可以像这样build立使用查询:

 SELECT FirstName, LastName, Mobile FROM [Sheet1$] 

即使用第一行值作为列名。