Diagnosi un'eccezione OLE DB quando Interrogazione di Excel 2010
-
13-09-2019 - |
Domanda
Per interrogare un foglio excel tramite SQL, ho usato per utilizzare:
Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties=""Excel 8.0;IMEX=1;HDR=YES;"""
o
Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + strPath + ";Extended Properties=""Excel 12.0;IMEX=1;HDR=YES;"""
Ora, questo ha funzionato bene fino a quando ho installato Office 2010.
Ora ho un
fornitore Microsoft.ACE.OLEDB.12.0 non è registrato su questa macchina fa eccezione.
Come faccio a trovare la corretta stringa di connessione / provider?
Soluzione
Forse si disinstalla il motore di database Access Components (ACE)? Sono ancora disponibili per il download da MSDN come 2007 driver Office System:. Data Connectivity Components
Altri suggerimenti
Credo che per 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"
Questo sembra funzionare nel mio studio visivo, ho avuto Excel per generare la stringa di query e aveva la voce più in esso.
Ho scaricato e installato Office System Pilota: Data Connectivity Components come consigliato sopra - e il codice qui sotto lavorato:
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();
}