I think you have two options.
-
Use datasets but specify reader.IsFirstRowAsColumnNames = false so that the whole sheet is the contents of the dataset.
Then in your example for row 10 column 3 you would have ds.Tables[0].Rows[9][2] -
Use the IDataReader interface and step through until you get to row 10 then read the value for field 3