use ComObj procedure Tmain_f.Button2Click(Sender: TObject); var eclapp,workbook,excelsheet:variant; i,num:integer; col1,col2,col3,col4,col5,col6,col7,col8,col9:string; begin if not tmp_cds.Active then tmp_cds.Active:=True; if OpenDialog1.Execute then begin if OpenDialog1.FileName<>'' then begin eclapp:=createoleobject('excel.application'); workbook:=createoleobject('excel.sheet'); workbook:=eclapp.workbooks.add; workbook:=eclapp.workbooks.open(opendialog1.FileName); eclapp.workbooks.item[1].activate; excelsheet:=workbook.sheets[1]; eclapp.visible:=0; i:=5; while trim(excelsheet.cells.item[i,1])<>'' do begin col1:=excelsheet.cells.item[i,1]; col2:=excelsheet.cells.item[i,2]; col3:=excelsheet.cells.item[i,3]; col4:=excelsheet.cells.item[i,4]; col5:=excelsheet.cells.item[i,5]; col6:=excelsheet.cells.item[i,6]; col7:=excelsheet.cells.item[i,7]; col8:=excelsheet.cells.item[i,8]; col9:=excelsheet.cells.item[i,9]; tmp_cds.Append; // tmp_cds.FieldByName('EmployeeID').AsString:=col1; tmp_cds.FieldByName('LastName').AsString:=col2; tmp_cds.FieldByName('FirstName').AsString:=col3; tmp_cds.FieldByName('Title').AsString:=col4; tmp_cds.FieldByName('TitleOfCourtesy').AsString:=col5; //tmp_cds.FieldByName('BirthDate').AsString:=col6; // tmp_cds.FieldByName('HireDate').AsString:=col7; tmp_cds.FieldByName('Address').AsString:=col8; tmp_cds.FieldByName('City').AsString:=col9; tmp_cds.Post; inc(i); end; workbook.close; eclapp.quit; eclapp:=unassigned; end; end; end;