Une exception diagnostic OLEDB lorsque Excel 2010 Interrogation
-
13-09-2019 - |
Question
Pour interroger une feuille Excel via SQL, je l'habitude d'utiliser:
Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties=""Excel 8.0;IMEX=1;HDR=YES;"""
ou
Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + strPath + ";Extended Properties=""Excel 12.0;IMEX=1;HDR=YES;"""
Maintenant, cela a bien fonctionné jusqu'à ce que j'ai installé Office 2010.
Maintenant, je reçois un
fournisseur de Microsoft.ACE.OLEDB.12.0 n'est pas enregistré sur cette machine exception.
Comment puis-je trouver la chaîne / fournisseur de connexion correcte?
La solution
Peut-être vous désinstallées la base de données Access composants Engine (ACE)? Ils sont encore disponibles pour téléchargement à partir de MSDN comme office System 2007 Driver:. Composants de connectivité de données
Autres conseils
Je crois que pour Excel 2010, il est:
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"
Cela semble travailler dans mon studio visuel, je me suis Excel pour générer la chaîne de requête et il avait l'entrée supplémentaire en elle.
J'ai téléchargé et installé le bureau pilote du système: Composants de connectivité de données comme indiqué ci-dessus - et le code ci-dessous travaillé:
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();
}