Cargar una planilla Excel en un DataSet Fecha: 30/Abr/2005 (14/04/2005)
|
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!!!