I\'m using OleDb to select data from excel spreadsheets. Each spreadsheet can contain many small tables, and possibly furniture like titles and labels. So it might look like
I would go with the solution from John ( reading 1000 rows at a time ).
If you have Excel installed you could also use OLE automation.
I have recorded a simple macro in Excel which select the last cell in the current table.
Sub Macro2()
Range("B14").Select
Selection.End(xlDown).Select
//MsgBox ActiveCell.Address, vbOKOnly
End Sub
Now you just need to translate this in C# and read the address of the active cell.