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?

Était-ce utile?

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();
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top