Pergunta

Para consultar uma folha de excel via SQL, eu costumava usar:

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

Agora, isso funcionou bem até que eu instalado Office 2010.

Agora, eu recebo um

provedor Microsoft.ACE.OLEDB.12.0 não está registado nesta máquina exceção.

Como posso descobrir a seqüência de conexão / provedor correto?

Foi útil?

Solução

Talvez você desinstalou o motor de banco de dados Access componentes (ECA)? Eles ainda estão disponíveis para download no MSDN como 2007 Office System motorista:. Componentes de Conectividade de dados

Outras dicas

Eu acredito que para 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"

Esta parece trabalho em meu estúdio visual, eu tenho Excel para gerar a string de consulta e tinha a entrada extra nele.

Eu baixado e instalado Office System motorista: Dados Componentes de Conectividade como aconselhado acima - e o código abaixo funcionou:

    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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top