none
IMPORTAR VARIAS HOJA DE EXCEL A SQL MEDIANTE VISUAL BASIC.NET RRS feed

  • Pregunta

  • Buenos dias tengo un archivo de excel con 38 hojas que deseo insertar a SQL mediante VISUAL BASIC, primero estuve trabajando con Datagridview para cada hoja y estuve capturando datos uno por uno para hacer un insert into pero el sistema se me hizo lento, ademas cada hoja de excel cuenta con algunas cedas vacías y otros combinadas, lo que quiero es trabajar sin datacridview haber si es factible, como veo en la pregunta y respuestas todos se basan en archivos de excel pero sin celdas combinadas o sin espacios, gracias
    lunes, 26 de junio de 2017 17:33

Respuestas

  • Hola AbsalonGR

    Es un proceso largo de explicar, te recomiendo visitar este enlace, el cual te redirige a una consulta parecida a la tuya en donde nuestro compañero detalla el paso a paso.

    Importar de excel a Sql mediante visual studio

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Propuesto como respuesta Hector- lunes, 26 de junio de 2017 19:14
    • Marcado como respuesta Joyce_ACModerator jueves, 29 de junio de 2017 19:49
    lunes, 26 de junio de 2017 18:59
  • Hola:
    Para este ejemplo he creado una tabla llamada prueba con la siguiente estructura

    Name          Varchar(50)

    Capital       Varchar(50)
    Continent     Varchar(50)
    Area          Int
    Population    Int

    El fichero origen es un fichero excel con los datos de la imagen

    En un Form con 1 Button, copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient
    Imports Spire.Xls
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim mdtDataTable As DataTable
            Dim workbook As Workbook = New Workbook()
            workbook.LoadFromFile("C:\TU_CARPETA\TU_FICHERO.xlsx")
            'Inicializar worksheet
            Dim sheet As Worksheet = workbook.Worksheets(0)
            mdtDataTable = sheet.ExportDataTable()
            '
            gP_DataTableToTable(mdtDataTable)
            MessageBox.Show("Proceso Finalizado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Sub

        Private Sub gP_DataTableToTable(ByRef rdtDataTable As DataTable)
            Try
                Dim lsCadConexion As String = "Data Source=.\SQLEXPRESS;Initial Catalog=TU_BASE_DE_DATOS;Integrated Security=True"
                Using loConexion As New SqlConnection(lsCadConexion)
                    Using loDataAdapter = New SqlDataAdapter("Select * From Prueba", loConexion)
                        Dim cmdBuilder As New SqlCommandBuilder(loDataAdapter)
                        loDataAdapter.Update(rdtDataTable)
                    End Using
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "gP_DataTableToTable", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub
    End Class

    El resultado es el de la imagen

    P.D.
    Se hace uso de la libreria Spire.XLS.dll, por lo tanto hay que añadir una referencia a dicha librería

    Un saludo desde Bilbo
    Carlos
    lunes, 26 de junio de 2017 19:27

Todas las respuestas

  • PRUEBA EL BULK INSERT,

    LINK

    lunes, 26 de junio de 2017 18:57
  • Hola AbsalonGR

    Es un proceso largo de explicar, te recomiendo visitar este enlace, el cual te redirige a una consulta parecida a la tuya en donde nuestro compañero detalla el paso a paso.

    Importar de excel a Sql mediante visual studio

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Propuesto como respuesta Hector- lunes, 26 de junio de 2017 19:14
    • Marcado como respuesta Joyce_ACModerator jueves, 29 de junio de 2017 19:49
    lunes, 26 de junio de 2017 18:59
  • Hola:
    Para este ejemplo he creado una tabla llamada prueba con la siguiente estructura

    Name          Varchar(50)

    Capital       Varchar(50)
    Continent     Varchar(50)
    Area          Int
    Population    Int

    El fichero origen es un fichero excel con los datos de la imagen

    En un Form con 1 Button, copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient
    Imports Spire.Xls
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim mdtDataTable As DataTable
            Dim workbook As Workbook = New Workbook()
            workbook.LoadFromFile("C:\TU_CARPETA\TU_FICHERO.xlsx")
            'Inicializar worksheet
            Dim sheet As Worksheet = workbook.Worksheets(0)
            mdtDataTable = sheet.ExportDataTable()
            '
            gP_DataTableToTable(mdtDataTable)
            MessageBox.Show("Proceso Finalizado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Sub

        Private Sub gP_DataTableToTable(ByRef rdtDataTable As DataTable)
            Try
                Dim lsCadConexion As String = "Data Source=.\SQLEXPRESS;Initial Catalog=TU_BASE_DE_DATOS;Integrated Security=True"
                Using loConexion As New SqlConnection(lsCadConexion)
                    Using loDataAdapter = New SqlDataAdapter("Select * From Prueba", loConexion)
                        Dim cmdBuilder As New SqlCommandBuilder(loDataAdapter)
                        loDataAdapter.Update(rdtDataTable)
                    End Using
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "gP_DataTableToTable", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub
    End Class

    El resultado es el de la imagen

    P.D.
    Se hace uso de la libreria Spire.XLS.dll, por lo tanto hay que añadir una referencia a dicha librería

    Un saludo desde Bilbo
    Carlos
    lunes, 26 de junio de 2017 19:27