miércoles, 3 de febrero de 2010

Cargar una planilla Excel en un DataSet

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

No hay comentarios:

Publicar un comentario