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
Archivado bajo: General