martes, 16 de noviembre de 2010

Cargar o Subir un archivo de Excel extension xls o xlsx en vb .net

Este código lo encontre ya hace tiempo googleando sin embargo era muy extenso lo simplifique lo más que pude y bueno aquí lo dejo:
Imports System.Data
Imports System.Data.OleDb
Imports System.IO
Imports System.Configuration
  Public Sub CargarArchivoX()
        If FileUpload1.HasFile Then
            Dim FileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
            Dim Extension As String = Path.GetExtension(FileUpload1.PostedFile.FileName)
            Dim FilePath As String = Server.MapPath("../../Upload/") & FileUpload1.FileName
            FileUpload1.SaveAs(Server.MapPath("../../Upload/") & FileUpload1.FileName)
            extraedatosX(FilePath, Extension, "Yes")
        End If
    End Sub
    Public Sub extraedatosX(ByVal FilePath As String, ByVal Extension As String, ByVal isHDR As String)
        Dim conStr As String = ""
        Select Case Extension
            Case ".xls"
                'Excel 97-03
                'conStr = ConfigurationManager.ConnectionStrings("Excel03ConString").ConnectionString()
                conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"
                Exit Select
            Case ".xlsx"
                'Excel 07
                 'conStr = ConfigurationManager.ConnectionStrings("Excel07ConString").ConnectionString
                conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"
                Exit Select
        End Select
        conStr = String.Format(conStr, FilePath, isHDR)
        Dim connExcel As New OleDbConnection(conStr)
        Dim cmdExcel As New OleDbCommand()
        Dim oda As New OleDbDataAdapter()
        Dim dt As New DataTable()
        cmdExcel.Connection = connExcel
        'Get the name of First Sheet
        connExcel.Open()
        Dim dtExcelSchema As DataTable
        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
        'dtExcelSchema.Rows.C()
        Dim SheetName As String = dtExcelSchema.Rows(0)("TABLE_NAME").ToString()
        connExcel.Close()
        'Read Data from First Sheet
        connExcel.Open()
        cmdExcel.CommandText = "SELECT * From [" & SheetName & "]"
        oda.SelectCommand = cmdExcel
        oda.Fill(dt)
        connExcel.Close()
        grdgenerico.Caption = Path.GetFileName(FilePath)
        grdgenerico.DataSource = dt
        grdgenerico.DataBind()
    End Sub


Tomando en cuenta que tienen un boton o un link button que al darle click simplemente debe mandar llamar la función CargarArchivoX() y que se debe contar con un FileUpload llamado FileUpload1 y por último un gridview llamado grdgenerico y una carpeta llamada Upload dos niveles arriba de la Aplicacion con permisos de escritura

1 comentario: