One way is to use the OLEDB dataprovider to load a datatable and then use the datatable to update the SQL Server database. The ffollowing code assumes the spreadsheet has column headers that match the column names in the SQL Server table.
'get .xlsx file path
Dim ofd As New OpenFileDialog
With ofd
.InitialDirectory = "C:|"
.Filter = "Excel|.xlsx"
.ShowDialog()
End With
'build connection string
Dim oledbconstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ofd.FileName & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
Dim oledbConn As New OleDbConnection(oledbconstr)
'You can use column names or "*" for all columns; Sheet name followed by "$"
Dim strSql As String = "SELECT [Column Name One], [Column Name Two] FROM [Sheet One$]"
Dim oledbcmd As New OleDbCommand(strSql, oledbConn)
Dim oledbda As New OleDbDataAdapter(oledbcmd)
'set AcceptChangesDuringFill to False so rows will have a row state of added
oledbda.AcceptChangesDuringFill = False
Dim dt As New DataTable
oledbda.Fill(dt)
Dim sqlConstr = "your SQL Server connection string"
Dim strSQLA As String = "Select * From yourTable"
Dim sqlconn As New SqlConnection(sqlConstr)
Dim cmd As New SqlCommand(strSQLA, sqlconn)
Dim sqlDa As New SqlDataAdapter(cmd)
Dim cb As New SqlCommandBuilder(sqlDa)
sqlDa.Update(dt)
If the speadsheet does not have column headings or the column names do not match the column names in the table, you will need to load the schema to the destination table, and loop through the datatable and add rows to the destination datatable.
See this link for more info on the OleDb connection string extended properties:
http://msdn.microsoft.com/en-us/library/Aa140022