none
importar excel a datagridview usando office 2010 RRS feed

  • Pregunta

  • Hola,

    para importar una excel a un dataset o datagridview, utilizo oledb y nunca he tenido problemas en cualquier versión de office anterior a la 2010. Ahora la misma aplicación con 2010 no me funciona! El string de conexión es algo distinto a las anteriores versiones según he visto pero no estoy seguro que sea el correcto. Concretamente la aplicación genera el error en el .Fill. Gracias.

    Dim MyConnection As OleDbConnection
        Dim myPath As String = "C:\test.xlsx"
    
        Try
          Dim DtSet As New DataSet
          Dim MyCommand As OleDbDataAdapter
          Dim conString As String = "Provider=Microsoft.ACE.OLEDB.14.0;Password="""";User ID=Admin;Data Source=" & myPath & ";Mode=Share Deny Write;Extended Properties=Excel 14.0""HDR=YES;"";Jet OLEDB:Engine Type=37"
    
          MyConnection = New OleDbConnection(conString)
          MyCommand = New OleDbDataAdapter("select * from [Hoja1$]", MyConnection)
    
          MyCommand.Fill(DtSet)
          DataGridView1.DataSource = DtSet
          'DataGridView1.DataBind()
          MyConnection.Close()
    
        Catch ex As Exception
    
        End Try
    miércoles, 19 de enero de 2011 14:53

Respuestas

  • hola

    es que quizas deberias cambiar de connection string

     

    Connection strings for Excel 2007

    prueba con este proveedor

    Provider=Microsoft.ACE.OLEDB.12.0;

    mas alla que sea excel 2007 prueba el mismo connection string

     

    la version de windows es de 64 bits ? si es asi prueba de cambiar el Target a x86

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 19 de enero de 2011 15:08
  • hola

    cuando estas en 64 bit al excel lo tienes abirto con el Office ? o sea lo estas visualizando, lo pregunto porque pareciera que viene por ahi el problema

     

    valida que tienes el Platform Target este en x86

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 19 de enero de 2011 15:56
  • Hola:

    Desde luego, no me extraña que obtengas errores con la cadena de conexión que estás utilizando para establecer una conexión con el Libro de Excel.

    Haz una prueba ejecutando el código de la siguiente manera:

            Try
                Dim myPath As String = "C:\test.xlsx"

                Dim cadenaConexion As String = _
                    "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                    "Extended Properties='Excel 12.0 Xml;HDR=Yes;'" & _
                    ";Data Source=" & myPath

                Using cnn As New OleDbConnection(cadenaConexion)

                    Dim sql As String = "SELECT * FROM [Hoja1$]"

                    Dim da As New OleDbDataAdapter(sql, cnn)

                    Dim dt As New DataTable()

                    da.Fill(dt)

                    DataGridView1.DataSource = dt

                End Using

            Catch ex As Exception
                MessageBox.Show(ex.Message)

            End Try

    Observa bien los parámetros de la cadena de conexión.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    jueves, 20 de enero de 2011 8:15
    Moderador

Todas las respuestas

  • hola

    es que quizas deberias cambiar de connection string

     

    Connection strings for Excel 2007

    prueba con este proveedor

    Provider=Microsoft.ACE.OLEDB.12.0;

    mas alla que sea excel 2007 prueba el mismo connection string

     

    la version de windows es de 64 bits ? si es asi prueba de cambiar el Target a x86

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 19 de enero de 2011 15:08
  • Hola Leandro,

    ya prové el provider que comentas y también me instalé el complemento de ms data acces y nada.

    Tengo windows 7 Pro 64bits como SO principal y lo estoy probando tambien en el virtual XP a 32bit.

    Saludos.

    miércoles, 19 de enero de 2011 15:26
  • si lo saco del try y genero el error me reporta:

    en 64bit:

    "El motor de base de datos de Microsoft Access no puede abrir el archivo 'C:\' o escribir en él. Otro usuario ya lo ha abierto de forma exclusiva o bien necesita permiso para ver y escribir datos."

    en virtual XP:

    "Could not find installable ISAM"

    ambos en la línea del .Fill

    miércoles, 19 de enero de 2011 15:45
  • hola

    cuando estas en 64 bit al excel lo tienes abirto con el Office ? o sea lo estas visualizando, lo pregunto porque pareciera que viene por ahi el problema

     

    valida que tienes el Platform Target este en x86

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 19 de enero de 2011 15:56
  • no, cerrado
    miércoles, 19 de enero de 2011 17:02
  • Hola:

    Desde luego, no me extraña que obtengas errores con la cadena de conexión que estás utilizando para establecer una conexión con el Libro de Excel.

    Haz una prueba ejecutando el código de la siguiente manera:

            Try
                Dim myPath As String = "C:\test.xlsx"

                Dim cadenaConexion As String = _
                    "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                    "Extended Properties='Excel 12.0 Xml;HDR=Yes;'" & _
                    ";Data Source=" & myPath

                Using cnn As New OleDbConnection(cadenaConexion)

                    Dim sql As String = "SELECT * FROM [Hoja1$]"

                    Dim da As New OleDbDataAdapter(sql, cnn)

                    Dim dt As New DataTable()

                    da.Fill(dt)

                    DataGridView1.DataSource = dt

                End Using

            Catch ex As Exception
                MessageBox.Show(ex.Message)

            End Try

    Observa bien los parámetros de la cadena de conexión.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    jueves, 20 de enero de 2011 8:15
    Moderador
  • :-)
    Hola Enrique,

    Ayer te mandé un correo a las cuentas de yahoo y de mvps.org, no se si lo has recibido. En fin, dame un toque cuando puedas.

    Un saludo!


    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Follow me on Facebook or Twitter!

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Geeks: http://geeks.ms/blogs/lfranco

    jueves, 20 de enero de 2011 8:37
    Moderador
  • Recibido.
     
    Un saludo, Lluis
     
     

    Enrique Martínez
      [MS MVP - VB]

    jueves, 20 de enero de 2011 13:12
    Moderador