I'm using this function to bind a named range in an excel spreadsheet to a datagrid:

VB Code:
  1. Public Function GetDataFromExcel(ByVal FileName As String, _
  2. ByVal RangeName As String) As System.Data.DataSet
  3.    ' Returns a DataSet containing information from
  4.    ' a named range in the passed Excel worksheet
  5.    Try
  6.        Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  7.            "Data Source=" & FileName & ";Extended Properties=Excel 8.0;"
  8.        Dim objConn As New System.Data.OleDb.OleDbConnection(strConn)
  9.        objConn.Open()
  10.        ' Create objects ready to grab data
  11.        Dim objCmd As New System.Data.OleDb.OleDbCommand( _
  12.            "SELECT * FROM " & RangeName, objConn)
  13.        Dim objDA As New System.Data.OleDb.OleDbDataAdapter()
  14.        objDA.SelectCommand = objCmd
  15.        ' Fill DataSet
  16.        Dim objDS As New System.Data.DataSet()
  17.        objDA.Fill(objDS)
  18.        ' Cleanup and return DataSet
  19.        objConn.Close()
  20.        Return objDS
  21.    Catch
  22.        ' Possible errors include Excel file
  23.        ' already open and locked, et al.
  24.        Return Nothing
  25.    End Try
  26. End Function

I call the function like this:

VB Code:
  1. DataGrid1.DataSource = GetDataFromExcel(Application.StartupPath & _
  2.    "\MyTestWorkbook.xls", "SampleNamedRange").Tables(0)

Everything works fine except for one problem. I have a column in the spreadsheet that has a value for time (e.g. 11:07:00 AM). The problem is that when i bind the data to the data grid, all of the values in this column are converted to "12/30/1899"...I tried changing the cell format to general, text and time but I cant seem to get it working. Any ideas are greatly appreciated!