none
Error en importar un archivo de Excel 2007 a SQL Server Express 2012 RRS feed

  • Pregunta

  • saludos amigos del foro, tengo un inconveniente, estoy desarrollando una aplicacion en vb.2013, lo que quiero es importar de excel un pagina de 3 columnas a una tabla en SQL Server Express 2012, mi codigo es el siguiente:

    Imports System.Data
    Imports System.Data.SqlClient

    Public Class Form1

        Dim nue_conexion As New conexion
        Dim nue_var As New variables

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

            nue_var.consulta = "SELECT * INTO cnta FROM OPENROWSET(" & _
                "'Microsoft.ACE.OLEDB.12.0','Excel 12.0 Xml;Database=D:\Descargas\Exportar\Exportar\bin\Debug\cnta.xls;HDR=Yes','SELECT * FROM [Hoja1$]')"

            Try
                nue_conexion.conectar()
                nue_var.cmd = New SqlCommand(nue_var.consulta, nue_conexion.conex())
                nue_var.cmd.ExecuteNonQuery()
                nue_conexion.desconectar()
            Catch mierror As SqlException
                MsgBox("Error de Conexión a la Base de Datos: " & mierror.Message)
            End Try

        End Sub

    End Class

    y el error que me arroja es:

    me podran ayudar porfavor,

    saludos,

    rudolf heiner.

    miércoles, 27 de julio de 2016 15:13

Respuestas

  • Saludos Camilo gracias por responder, mira  mi maquina es de 64 bits, desinstale el office 2007 e instale el office 2013 64 bits, ya instale el Microsoft.ACE.OLEDB.12.0 version 2010 de 64 bits, ahora me vota otro error:

    ya esta todo ok pero me vota ese error, que puedo hacer porfavor si me puenden ayudar,

    quedo de ustedes,

    rudolf heiner.

    • Marcado como respuesta Rudolf Heiner sábado, 30 de julio de 2016 5:44
    jueves, 28 de julio de 2016 4:37
  • Hola Augusto, ya solucione el problema pero no con vb.net si no con vfp9 lo que hice fue cargar en una tabla los datos del excel y luego mandarlos al sql server, muchas gracias, saludos,

    rudolf heiner.

    • Marcado como respuesta Rudolf Heiner sábado, 30 de julio de 2016 5:46
    sábado, 30 de julio de 2016 5:46

Todas las respuestas

  • Estimado:

    Una pregunta, la cadena de conexion no deberia ser algo asi:

    "Provider=Microsoft.ACE.oledb.12.0; Data Source={0}; Extended Properties='Excel 12.0 Xml; HDR=YES; IMEX=1;"

    Reemplazando el "{0}" por la direccion del archivo de excel.

    Saludos.


    Camilo Villa

    miércoles, 27 de julio de 2016 18:08
  • Hola , fíjate dos cosas

    una que cuando realizes esta operación el excel este cerrado

    la otra esque nos digas si estas compilando en 32 o 64 bits. porque dependiendo de eso deberías tener instalada la versión de ACE correspondiente.

    tampoco veo correcto que la ruta del excel la asigenes en el bin

    \bin\Debug\...

    deberías poner otra ruta o en todoc aso si quieres indicar que debe estar a la altura del .exe de tu proyecto

    algo como

     Path.Combine(Application.StartupPath, "cnta.xls");


    y porque si usas exel 2007 utilizas la extension xls, no deberia ser xlsx.

    Adicionalmente te diría que esta operación  la reallizes en sql a ver si funciona

    SELECT * INTO cnta FROM OPENROWSET....

    El proveedor que estás tratando de usar (Microsoft.ACE.OLEDB.12.0)deberías verlo en sqlmangment, a esta altura

    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.






    • Editado Augusto1982 miércoles, 27 de julio de 2016 19:03
    miércoles, 27 de julio de 2016 18:46
  • Hola Gracias por responder Augusto y Camilo, miren el codigo a quedado asi:

    Imports System.Data.OleDb

    Public Class Form2

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

            ' Cadena de conexión con el archivo de Excel
            Dim cadenaConexion As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=cnta.xlsx;" &
                "Extended Properties='Excel 12.0 Xml'; HDR=Yes;"

            Dim n As Integer

            Try
                Using cnn As New OleDbConnection(cadenaConexion)
                    Dim cmd As OleDbCommand = cnn.CreateCommand()

                    cmd.CommandText =
                         "SELECT * INTO cnta " &
                         "IN ''[ODBC;Driver={SQL Server Native Client 11.0};" &
                         "Server=RUDOLF\SQLEXPRESS2012;Database=sys_contab_2016_yodo_cletas_1;UID=sa;PWD=admin123456]" &
                         "FROM [Hoja1$]"
                    cnn.Open()
                    n = cmd.ExecuteNonQuery()

                End Using

                MessageBox.Show("Nº de registros insertados: " & n.ToString())

            Catch ex As Exception
                ' Se ha producido un error
                MessageBox.Show(ex.Message)

            End Try

        End Sub

    End Class

    ahora el problema es que vota un error : "NO SE PUEDO ENCONTRAR EL ARCHIVO ISAM INSTALABLE"

    QUEDO DE USTEDES, a ver si me pueden ayudar por favor,

    rudolf heiner.


    miércoles, 27 de julio de 2016 19:17
  • Estimado:

    Hay por aca un huilo con ese error, mira la solucion que le plantean en el link.

    También puedes tener como referencia este otro link.

    Saludos cordiales.


    Camilo Villa

    miércoles, 27 de julio de 2016 20:14
  • Saludos Camilo gracias por responder, mira  mi maquina es de 64 bits, desinstale el office 2007 e instale el office 2013 64 bits, ya instale el Microsoft.ACE.OLEDB.12.0 version 2010 de 64 bits, ahora me vota otro error:

    ya esta todo ok pero me vota ese error, que puedo hacer porfavor si me puenden ayudar,

    quedo de ustedes,

    rudolf heiner.

    • Marcado como respuesta Rudolf Heiner sábado, 30 de julio de 2016 5:44
    jueves, 28 de julio de 2016 4:37
  • Hola fijate a cuanto esta compilando tu aplicativo en las propiedades del proyecto


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    jueves, 28 de julio de 2016 21:31
  • Hola Augusto, ya solucione el problema pero no con vb.net si no con vfp9 lo que hice fue cargar en una tabla los datos del excel y luego mandarlos al sql server, muchas gracias, saludos,

    rudolf heiner.

    • Marcado como respuesta Rudolf Heiner sábado, 30 de julio de 2016 5:46
    sábado, 30 de julio de 2016 5:46