You can also retrieve data using ado and select data from a named range(which acts in the same way as a table in a db)
here is some code which I got from somehere
Andy
' This is all standard ADO except for the connection string.
' You can also use a DSN instead, but so it'll run out of the
' box on your machine I'm using the string instead.
Set cnnExcel = Server.CreateObject("ADODB.Connection"

cnnExcel.Open "DBQ=" & Server.MapPath("adotest.xls"

& ";" & _
"DRIVER={Microsoft Excel Driver (*.xls)};"
' Same as any other data source.
' FYI: myrange1 is my named range in the Excel file
Set rstExcel = Server.CreateObject("ADODB.Recordset"

rstExcel.Open "SELECT * FROM myrange1;", cnnExcel, _
adOpenStatic, adLockPessimistic