要通过SQL查询Excel工作表,我曾经使用过:
Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties=""Excel 8.0;IMEX=1;HDR=YES;"""
或
Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + strPath + ";Extended Properties=""Excel 12.0;IMEX=1;HDR=YES;"""
现在这个工作正常,直到我安装Office 2010。
现在我得到了
Microsoft.Ace.OLEDB.12.0提供程序未在此计算机上注册 异常。
如何找到正确的连接字符串/提供商?
答案 0 :(得分:7)
我相信Excel 2010是:
Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=D:\\MyDocs\\oledb.xlsx;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:Engine Type=37"
这似乎适用于我的视觉工作室,我使用Excel生成查询字符串,并且其中有额外的条目。
答案 1 :(得分:2)
我按照上面的建议下载并安装了Office系统驱动程序:数据连接组件 - 以下代码有效:
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source=d:\\Sample.xlsx;Mode=Share Deny Write;Extended Properties=\"HDR=YES;\";Jet OLEDB:Engine Type=37";
OleDbConnection connection = new OleDbConnection(connectionString);
try
{
connection.Open();
OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", connection);
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = command;
DataSet ds = new DataSet();
adapter.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
catch (Exception)
{
//throw;
}
finally
{
connection.Close();
}
答案 2 :(得分:1)
您是否卸载了Access数据库引擎(ACE)组件?它们仍可从MSDN下载2007 Office System Driver: Data Connectivity Components。