As far as I know, there is no way to read it "without" looping through the cells. Think about it, if you don't read the cells, then how are you going to get its value.
But I can suggest you a way to reduce the looping.
You can use the
UsedRange
property of the Sheet which will return you the range where your cells have values, so that you don't have to read the whole sheet searching for values.
Using xl = Microsoft.Office.Interop.Excel;
private xl.Application xlApp;
xlApp = Globals.ThisAddin.Application;
xl.WorkBook workbook = xlApp.ActiveWorkbook;
xl.WorkSheet worksheet = workbook.ActiveSheet;
xl.Range usedRange = worksheet.UsedRange;
String value;
foreach(xl.Range rng in usedRange.Cells)
{
value = rng.Value;
}