Como subir un archivo de Excel a Sql Server vía Web

Espero que sea de utilidad la siguiente función



 


Public Sub XLS_LoadData(ByVal FileName As String, _ 
                                           ByVal SheetName As String)        
'FUNCIÓN QUE TOMA UN ARCHIVO EN EXCEL QUE SE ENCUENTRA        
' EN EL SERVIDOR Y LO SUBE A UNA TABLA DE BASE DE DATOS SQL SERVER
        
' CREADO POR WJAMA        
Dim FileMapPath As String
       
Dim FileNameC As String
       
Dim dsXLS As New Data.DataSet
       
Dim strConn As String 

        FileMapPath = Server.MapPath("Archivos") 'Ruta en la que se encuentra el archivo que se va a subir a la base


        FileNameC = FileMapPath & "\" & FileName ' se prepara el nombre del archivo completo       
'la conección a excel, no requiere que este instalado excel en el servidor
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & FileNameC & ";" & _
                "Extended Properties=Excel 8.0;"        
'Realiza la consulta a la hoja de excel mediante un select       
' el nombre de la hoja se recibe como parámetro
       
' lo que no se hasta el momento es como hacer para recuperar los nombres de las hojas del libro
       
' sin tener que usar los objetos del Excel (que implica instalar Excel en el servidor)
       
' mi objetivo evitar instalar Excel
        Try
            Dim daXLS As New OleDbDataAdapter("SELECT * FROM [" & SheetName.ToString & "$]", strConn)
            daXLS.TableMappings.Add("Table", "ExcelData")
            daXLS.Fill(dsXLS)
        Catch ex As OleDb.OleDbException
            'Return ex.Message.ToString
        End Try         'Utiliza bulkcopy para pasar los datos del dataset con los datos de Excel a la tabla de SQL Server
        Dim bulkcopy As New SqlClient.SqlBulkCopy(ConfigurationManager.ConnectionStrings"cnsBaseDatos").ConnectionString)
        Try
            bulkcopy.DestinationTableName = "TB_DATOSEXCEL"
             bulkcopy.WriteToServer(dsXLS.Tables(0))
             bulkcopy.Close()
        Catch ex As Exception
            'Return ex.Message.ToString
        End Try

 

No hay comentarios: