He creado una clase de carga de archivos de tipo Excel 2007
Public Shared Function ChecarExtension(ByVal extension As String) As Boolean Select Case extension.ToLower() Case ".xlsx" Return True Case Else Return False End Select End Function
Crear una función para que solo acepte archivos con extensión .xlsx
La siguiente función es cargar el archivo, yo le he agregado de checar si existe antes algun archivo que se haya cargado en la carpeta para que lo elimine y pueda cargar el nuevo archivo.
Public Shared Sub Cargar(ByVal archivo As FileUpload, ByVal instancia As HttpRequest, ByVal tabla As GridView) Dim _carpeta As String = "Recursos\Archivos\" Dim _directorioGral As String = instancia.PhysicalApplicationPath Try If archivo.HasFile Then Dim _extension As String = Path.GetExtension(archivo.FileName) If ChecarExtension(_extension) Then Dim _directorioParaGuardar As String = _directorioGral + _carpeta + archivo.FileName '----------------------Eliminar Archivos Existentes------------------------------ EliminarArchivos(instancia) '-----------------------Guardar nuevo archivo------------------------------ archivo.SaveAs(_directorioParaGuardar) tabla.DataSource = MostrarExcel(_directorioParaGuardar) tabla.DataBind() End If Else End If Catch ex As Exception Throw New Excepciones("Error al cargar el archivo ", ex) End Try End Sub
He aquí el metodo de eliminar los archivos que mando a llamar en la función anterior.
Public Shared Sub EliminarArchivos(ByVal instancia As HttpRequest) Dim _carpeta As String = "\Recursos\Archivos\" Dim _directorioGral As String = instancia.PhysicalApplicationPath + _carpeta Dim directorio As New DirectoryInfo(_directorioGral) Dim archivos As FileInfo() = directorio.GetFiles() Dim archivo As FileInfo For Each archivo In archivos archivo.Delete() Next End Sub
Como se han de ver dado cuenta en la función de carga, mando a llamar un método de mostrarExcel.
Esta función se conecta al archivo como recurso de datos y extrae la información para mostrarla en un GridView, de la siguiente manera:
Public Shared Function MostrarExcel(ByVal ruta As String) As DataTable Dim _cadenaconexion As String = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0", ruta) Dim _oledbConn As New OleDbConnection(_cadenaconexion) Dim dt As New DataTable() Try _oledbConn.Open() Dim _cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [Sheet1$]", _oledbConn) Dim _oleda As OleDbDataAdapter = New OleDbDataAdapter() _oleda.SelectCommand = _cmd _oleda.Fill(dt) _oleda.Dispose() _cmd.Dispose() Catch ex As Exception Finally _oledbConn.Close() _oledbConn.Dispose() End Try Return dt End Function
He agregado un control de tipo FileUpload, un botón y un gridview para hacer la prueba.
Dentro del botón mandamos a llamar el método de cargar el archivo.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click CargarArchivos.Cargar(FileUpload1, Me.Request, Me.GridView1) End Sub
Resultado final:
Espero les sirva de utilidad.





Recent Comments