There are many great ways to do this, as others have already stated. Following the "Get Excel Data Through SQL Track", here are a few pointers.
Excel has a "Data Connection Wizard" that allows you to import or link from another data source or even to the same Excel file.
Microsoft Office (and the OS) has two providers of interest: the old "Microsoft.Jet.OLEDB" and the last "Microsoft.ACE.OLEDB". Look for them when setting up the connection (for example, using the data connection wizard).
Once connected to an Excel workbook, the worksheet or range is equivalent to a table or view. The worksheet table name is the name of the worksheet with the dollar sign ("$") attached to it and surrounded by square brackets ("[" and "]"); range, it's just the name of the range. To specify an unnamed range of cells as the recording source, add the standard Excel column / column notation to the end of the sheet name in square brackets.
Native SQL will (more or less be) Microsoft Access SQL. (It used to be called JET SQL, but Access SQL has evolved, and I believe that JET has deprecated old tech.)
Example: reading a worksheet: SELECT * FROM [Sheet1 $]
Example: reading range: SELECT * FROM MyRange
Example: reading an unnamed range of cells: SELECT * FROM [Sheet1 $ A1: B10]
There are many many books and websites to help you get the details.
=== Further notes ===
By default, it is assumed that the first row of the Excel data source contains column headers that can be used as field names. If this is not the case, you should disable this option, or your first row of data "disappears" to be used as field names. This is done by adding the additional parameter HDR = to the extended properties of the connection string. The default value that does not need to be specified is HDR = Yes. If you do not have column headers, you need to specify HDR = No; the provider calls your fields F1, F2, etc.
Warning for specifying worksheets. The provider assumes that your data table begins with the most recent, leftmost, non-empty cell on the specified sheet. In other words, your data table can start at row 3, column C without a problem. However, you cannot, for example, print the workheeet header above and to the left of the data in cell A1.
Range warning. When you specify a worksheet as the source of a record, the provider adds new records below existing records in the worksheet, as space permits. When you specify a range (named or unnamed), Jet also adds new entries under existing entries in the range, as space permits. However, if you request a source range, the resulting record set does not include newly added records outside the range.
Data types (worth a try) for CREATE TABLE: Short, Long, Single, Double, Currency, DateTime, bits, bytes, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal.
Connection to the "old technology" Excel (files with the xls extension): Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0; . Use the original Excel 5.0 database type for Microsoft Excel books 5.0 and 7.0 (95) and use the original Excel 8.0 database type for Microsoft Excel books 8.0 (97), 9.0 (2000), and 10.0 (2002).
Connection to the "last" Excel (files with the xlsx extension): Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
Processing data as text: IMEX installation processes all data as text. Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Excel2007file.xlsx; Advanced Properties = "Excel 12.0 Xml; HDR = YES; IMEX = 1";
(For more details see http://www.connectionstrings.com/excel )
Additional information at http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspx and http://support.microsoft.com/kb/316934
Connecting to Excel via ADODB via VBA, described in detail at http://support.microsoft.com/kb/257819
Microsoft JET 4 information at http://support.microsoft.com/kb/275561