无法使用select语句中的where子句从Excel工作表中读取数据

时间:2012-05-04 12:35:15

标签: sql vb.net 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)

异常指向最后一行MyCommand.Fill(DtSet),它向我显示我的select语句存在问题。以前我的代码读取数据并在select中显示它而没有where子句但是当我添加where语句时它只能从列I具有的{{1}}列中读取数据值等于176,它反而给出一个异常,表明某些必需参数缺少值

1 个答案:

答案 0 :(得分:2)

如果HDR = NO,我的列将变为F9,因为oledb会将列命名为F1 .. Fn以供其内部参考。

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

在这种情况下,OLEDB驱动程序将为选择中的每列创建列名(F1到Fn)。因此,如果您将范围“A4:K14”更改为“B4:K14”,则F9列将为F8。