حسنا يمكن استعمال المثال السابق للاستيراد بيانات اكسل و ااضافتها الى ملف اكسس ,,,بالفتراض انك تستعمل ADOQuery او ADOTable فكلاهما يقوم بنفس الشي ,,, يمكنك العمل Transaction لالغاء عملية الاضافة في حال وقوع خطا في استراد حيث يمكنك الغاء الاضافات الجديدة و البد ء من جديد بعد تصحيح البيانات الخطا في الاكسل ....
ملاحظة لاتقم بتغيير الثابت -4121 فهذا يستعمله الاكسل لتحدييك اللسطر الفارغ الاخير
ملاحظة لاتقم بتغيير الثابت -4121 فهذا يستعمله الاكسل لتحدييك اللسطر الفارغ الاخير
كود :
uses comobj;
procedure TForm2.Button1Click(Sender: TObject);
var
ExelFile,Dir:string;
xlApp,xlSheet,xlFile:Variant;
line,LastCorrect:integer;
begin
Dir:=ExtractFilePath(ParamStr(0));
if not PromptForFilename(ExelFile,'Excel|*.xlsx','','', Dir) then
Exit;
xlApp:= CreateOleObject('Excel.Application');
try
xlApp.Visible := False;
xlApp.DisplayAlerts := False;
xlFile := xlApp.Workbooks.Open(ExelFile);
xlSheet:=xlFile.Sheets['Feuil1'];
ADOQuery1.DisableControls();
try
LastCorrect:= xlSheet.Range['A1'].End[-4121].Row;
for line := 2 to LastCorrect do
begin
ADOQuery1.Append();
ADOQuery1.FieldByName('col1').AsVariant:=xlSheet.Cells[1].Item[line].value;
ADOQuery1.FieldByName('col2').AsVariant:=xlSheet.Cells[2].Item[line].value;
ADOQuery1.FieldByName('col3').AsVariant:=xlSheet.Cells[3].Item[line].value;
ADOQuery1.Post();
end;
finally
ADOQuery1.EnableControls();
end;
finally
xlApp.Quit;
end;
end;
