在select语句中,无法使用where子句从excel表读取数据

我正在尝试从excel工作表中读取数据,但有一个例外情况说,没有给出一个或多个我不明白的必需参数的值。 这是我的代码直到错误指向的地方:

Dim MyConnection As System.Data.OleDb.OleDbConnection Dim DtSet As System.Data.DataSet Dim MyCommand As System.Data.OleDb.OleDbDataAdapter MyConnection = New System.Data.OleDb.OleDbConnection _ ("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\Staff Contracts.xlsx; Extended Properties=""Excel 12.0;HDR=NO""") MyCommand = New System.Data.OleDb.OleDbDataAdapter _ ("select * from [Staff Contracts$A4:K14] where I=176", MyConnection) MyCommand.TableMappings.Add("Table", "TestTable") DtSet = New System.Data.DataSet MyCommand.Fill(DtSet) 

exception指向最后一行MyCommand.Fill(DtSet) ,它显示我的select语句有问题。 以前,我的代码读取数据,并在select中没有where子句的情况下显示它where但是当我添加where语句以便它只能读取列I的值等于176的行的数据时,它会给出一个exception,某些必需的参数缺less一个值

在HDR = NO的情况下,I列将变为F9,因为oledb将命名列F1 .. Fn作为其内部参考。

 MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Staff Contracts$A4:K14] where F9=176", MyConnection); 

在这种情况下,OLEDB驱动程序将为select(F1到Fn)中的每一列创build列名。 所以如果将范围“A4:K14”更改为“B4:K14”,那么列F9将为F8。