Cargar una planilla Excel en un DataSet

Fecha: 30/Abr/2005 (14/04/2005)
Autor: Alvaro Regalado; alvaritus@msn.com

 


Una función sencilla para importar una hoja de Excel en un DataSet.

Hace poco tiempo tuve que hacer una página ASP.NET que leyera los datos de una planilla Excel y los guardara en un DataSet. En mi caso en particular precisaba enlazar dichos datos en una ComboBox, que es lo que les voy a exponer en este caso.

1) Lo primero que debemos hacer es definir el path del archivo en el archivo Web.config (en el caso que estemos creando una aplicación Web)

<appSettings>

            <!-- Path clientes -->

            <add key="Path_Clientes" value="C:\Inetpub\wwwroot\Solicitudes\Clientes.xls"/>

</appSettings>

 

2) Luego, en el evento Page_Load de la página, llamamos a la función CargarClientes() que es la que tiene el código necesario para cargar la hoja Excel. La función CargarServicios tiene la misma funcionalidad básica pero apunta a otro Objeto (Servicios) que no está implementada en este artículo.

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not Page.IsPostBack Then

            If CargarClientes() AndAlso CargarServicios() then

              'Introducir aquí el código de usuario para inicializar la página

            Else

                JavaMsgBox("No existen los archivos necesarios para cargar la página. Contacte al administrador")

                Return

            End If

        End If

End Sub

3) Finalmente, definimos la función en cuestión. Como pre requisito, debemos tener creada en la página una ComboBox llamada CMBcliente en donde se cargaran los clientes

Function CargarClientes() As Boolean

        Try

            'Leer el path del archivo Excel que tiene los datos del cliente

Dim path As String = ConfigurationSettings.AppSettings("Path_Clientes")

            'Si el archivo existe...

            If File.Exists(path) Then

                'Dimensionar los elementos necesarios para leer y cargar los datos

                Dim oConn As New OleDbConnection

                Dim oCmd As New OleDbCommand

                Dim oDa As New OleDbDataAdapter

                Dim oDs As New DataSet

                'Atención: Esta es la cadena de conexión. La misma lee el archivo especificado en el path

                oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _

                path & "; Extended Properties= Excel 8.0;"

                ' Abrir la conexión, y leer [Hoja 1] del archivo Excel

                oConn.Open()

                oCmd.CommandText = "SELECT * FROM [Hoja1$]"

                oCmd.Connection = oConn

                oDa.SelectCommand = oCmd

                'Llenar el DataSet

                oDa.Fill(oDs, "Clientes")

                'Cargar la ComboBox Cliente con los datos

                CMB_cliente.DataSource = oDs.Tables(0).DefaultView

                'Mostrar el Nombre de la Empresa

                CMBcliente.DataTextField = "ClienteNombre"

                'Asignar al valor de la combo el código del cliente

                CMBcliente.DataValueField = "ClienteCodigo"

                CMBcliente.DataBind()

                oConn.Close()

                Return True 'Enlazado exitoso!

            Else

                Return False 'Enlazado fallido!

            End If

        Catch ex As Exception

            'Aqui va el código que controle la excepción

        End Try

End Function

NOTA: La planilla de Excel debe tener para este ejemplo el siguiente formato:

ClienteNombre ClienteCodigo
Juan Perez 112244
Claudia Sosa 3355766

 

Espero que les haya gustado y que les sirva. Ésta pagina que hice envía por mail los resultados de la selección del usuario al administrador. Si les interesa, me escriben y les paso esa funcionalidad también.

Un abrazo grande a todos desde Montevideo, Uruguay y en especial a "Guille" que va a visitarnos el 16/4. Hasta la próxima!!!

 


ir al índice