You can use Excel Interop (Microsoft.Office.Interop.Excel):
Here's a snippet of some code:
object missing = (object) Type.Missing;
Application app = new Application();
Workbooks books = app.Workbooks;
Workbook book = books.Open("somefile.xls", missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing, missing);
Worksheet sheet = (Worksheet)book.Worksheets[1];
It's got some weirdnesses (like those "missing" parameters) but it works pretty smoothly. If you take this approach, be careful that the EXCEL.exe process doesn't get orphaned.