n := OpenFile(); - это у меня была функция сделана для открытия файла...
переделал как вы писали выше, вроде и правда заработало.
получилось как то вот так:
Код:

procedure TForm1.Button1Click(Sender: TObject);
var excel : variant;
i, j, RowsCount: integer;
begin
Form1.OpenDialog1.Execute();
excel := CreateOleObject('excel.application');
excel.workbooks.open[Form1.OpenDialog1.FileName];
RowsCount := excel.ActiveSheet.UsedRange.Rows.Count;
excel.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
for i := 1 to RowsCount do
begin
sg1.cells[i - 1, 0] := excel.cells[2, i].Value; // время
sg1.cells[i - 1, 1] := excel.cells[3, i].Value; // фио
sg1.cells[i - 1, 2] := excel.cells[4, i].Value; // номер
end;
excel.activeworkbook.close;
excel.application.quit;
end;
осталось только допилить код чтобы он все данные без явного указания ячеек расставлял (я про такие строки sg1.cells[i - 1, 0] := excel.cells[2, i].Value; ) ...
будем думать и химичить, если не дойдёт как наверно ещё обращусь
PS: только одного не понял, вроде бы в sg1.cells[i , j] , i - это столбец, а j - это строка... но по вашему примеру он мне строки в столбцы выводил, а так как написано у меня, он выводит строки в строчку, как мне и хотелось... в чём же загадка?