Your code is not correct in a number of places. You set findRange six times, so it will always contain the very last item. It would be easier to write a loop for each row and select the column entries from each row. Something like:
for (int row = 0; ; ++row)
{
string field1 = workSheet.Cells[row, 1].Value as string;
if (string.IsNullOrEmpty(field1))
break;
string field3 = workSheet.Cells[row, 3].Value as string;
string field4 = workSheet.Cells[row, 4].Value as string;
string field6 = workSheet.Cells[row, 6].Value as string;
string field7 = workSheet.Cells[row, 7].Value as string;
string field28 = workSheet.Cells[row, 28].Value as string;
}