Pregunta

Para consultar una hoja de Excel a través de SQL, solía utilizar:

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;"""

Ahora bien, esto funcionó bien hasta que he instalado Office 2010.

Ahora me sale un

  

proveedor de Microsoft.ACE.OLEDB.12.0 no está registrado en esta máquina   excepción.

¿Cómo puedo encontrar la correcta cadena de conexión / proveedor?

¿Fue útil?

Solución

Tal vez desinstalado el motor de base de datos de acceso (ACE) componentes? Ellos todavía están disponibles para su descarga desde MSDN como 2007 Office System conductor:. Los datos componentes de conectividad

Otros consejos

Creo que para Excel 2010 es:

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"

Esto parece trabajar en mi estudio visual, que tiene Excel para generar la cadena de consulta y tenía la entrada extra en él.

He descargado e instalado Office System Conductor: Componentes de conectividad de datos según lo aconsejado por encima de - y el código de abajo trabajado:

    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();
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top