不支持Cells方法,可以参看我以下的例子: procedure TForm1.Button1Click(Sender: TObject); var MsExcel,WorkBook,WorkSheet:Variant; i:integer; begin MsExcel :=CreateOLEObject('Excel.Application'); if OpenDialog1.Execute then begin MsExcel.WorkBooks.Open(OpenDialog1.FileName); WorkBook :=MsExcel.ActiveWorkBook; WorkSheet :=MsExcel.ActiveSheet; for I:=2 to MSExcel.ActiveSheet.UsedRange.Rows.Count do begin with AdoQuery1 do begin Close; Sql.Text :=' Insert Into EmployeeInfo(EmployeeNo,Name,Depart)' +' Values ' +'(:No,:Name,:Depart)'; paraMeters.ParamByName('No').Value :=MSexcel.cells[i,1].value; paraMeters.ParamByName('Name').Value :=MSexcel.cells[i,2].value; paraMeters.ParamByName('Depart').Value :=MSexcel.cells[i,3].value; ExecSql; end; end; ShowMessage('成功插入数据!'); end; MSExcel.ActiveWorkBook.Close; MSExcel.Quit; //MsExcel :=Unassigned; end;
procedure TForm1.Button1Click(Sender: TObject);
var
MsExcel,WorkBook,WorkSheet:Variant;
i:integer;
begin
MsExcel :=CreateOLEObject('Excel.Application');
if OpenDialog1.Execute then
begin
MsExcel.WorkBooks.Open(OpenDialog1.FileName);
WorkBook :=MsExcel.ActiveWorkBook;
WorkSheet :=MsExcel.ActiveSheet;
for I:=2 to MSExcel.ActiveSheet.UsedRange.Rows.Count do
begin
with AdoQuery1 do
begin
Close;
Sql.Text :=' Insert Into EmployeeInfo(EmployeeNo,Name,Depart)'
+' Values '
+'(:No,:Name,:Depart)';
paraMeters.ParamByName('No').Value :=MSexcel.cells[i,1].value;
paraMeters.ParamByName('Name').Value :=MSexcel.cells[i,2].value;
paraMeters.ParamByName('Depart').Value :=MSexcel.cells[i,3].value;
ExecSql;
end;
end;
ShowMessage('成功插入数据!');
end;
MSExcel.ActiveWorkBook.Close;
MSExcel.Quit;
//MsExcel :=Unassigned;
end;