delphi4arab منتديات دلفي للعرب
استراد ملف اكسل الى جدول - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : استراد ملف اكسل الى جدول (/showthread.php?tid=11924)

الصفحات: 1 2


استراد ملف اكسل الى جدول - tahar1983 - 08-05-2022

لديا جدول اسمه etud1
واريد ان اجلب له بيانات    اكسل بحيث هده البيانات تاتي تحت الاخرى مباشرة
وكل مرة استدعى بيانات تاتي تحت الاخرى


RE: استراد ملف اكسل الى جدول - ALG2009 - 08-05-2022

السلام عليكم

تفضل

https://www.youtube.com/watch?v=fDoeSSRwaKY&list=PLC6_vCD988MFmrQZ5ftXUedlLwI-UA65E&index=5

الرابط الثاني

https://www.youtube.com/watch?v=Hi1Agzy1dEo&list=PL1c7L5EsigqLUDBGdq2tS02L4BPz_VfDJ&index=6

لا أدري إن كان هناك مكون أو كمبونانت يفي بالغرض المطلوب دون العناء أرجو من له علم أن يساعد


RE: استراد ملف اكسل الى جدول - Ndagor - 09-05-2022

كود :
implementation {$R *.dfm} uses comobj; procedure TForm2.Button1Click(Sender: TObject); var xlApp,xlSheet,xlFile:Variant; line:integer; S1,S2,S3:string; begin   xlApp:= CreateOleObject('Excel.Application');   try     xlApp.Visible := False;     xlApp.DisplayAlerts := False;     xlFile := xlApp.Workbooks.Open('C:\Users\user33\Documents\test.xlsx');     xlSheet:=xlFile.Sheets['Feuil1'];     for line := 1 to 10 do     begin       S1:=VarToStr(xlSheet.Cells[1].Item[line].value);       S2:=VarToStr(xlSheet.Cells[2].Item[line].value);       S3:=VarToStr(xlSheet.Cells[3].Item[line].value);       ShowmessageFmt('%s ; %s ; %s',[S1,S2,S3]);     end;   finally     xlApp.Quit;   end; end;



RE: استراد ملف اكسل الى جدول - tahar1983 - 09-05-2022

(09-05-2022, 01:00 PM)Ndagor كتب :
كود :
implementation {$R *.dfm} uses comobj; procedure TForm2.Button1Click(Sender: TObject); var xlApp,xlSheet,xlFile:Variant; line:integer; S1,S2,S3:string; begin   xlApp:= CreateOleObject('Excel.Application');   try     xlApp.Visible := False;     xlApp.DisplayAlerts := False;     xlFile := xlApp.Workbooks.Open('C:\Users\user33\Documents\test.xlsx');     xlSheet:=xlFile.Sheets['Feuil1'];     for line := 1 to 10 do     begin       S1:=VarToStr(xlSheet.Cells[1].Item[line].value);       S2:=VarToStr(xlSheet.Cells[2].Item[line].value);       S3:=VarToStr(xlSheet.Cells[3].Item[line].value);       ShowmessageFmt('%s ; %s ; %s',[S1,S2,S3]);     end;   finally      xlApp.Quit;   end; end;

اين اضع هذا الكود


RE: استراد ملف اكسل الى جدول - tahar1983 - 10-05-2022

(09-05-2022, 11:44 PM)tahar1983 كتب :
(09-05-2022, 01:00 PM)Ndagor كتب :
كود :
implementation {$R *.dfm} uses comobj; procedure TForm2.Button1Click(Sender: TObject); var xlApp,xlSheet,xlFile:Variant; line:integer; S1,S2,S3:string; begin   xlApp:= CreateOleObject('Excel.Application');   try     xlApp.Visible := False;     xlApp.DisplayAlerts := False;     xlFile := xlApp.Workbooks.Open('C:\Users\user33\Documents\test.xlsx');     xlSheet:=xlFile.Sheets['Feuil1'];     for line := 1 to 10 do     begin       S1:=VarToStr(xlSheet.Cells[1].Item[line].value);       S2:=VarToStr(xlSheet.Cells[2].Item[line].value);       S3:=VarToStr(xlSheet.Cells[3].Item[line].value);       ShowmessageFmt('%s ; %s ; %s',[S1,S2,S3]);     end;   finally      xlApp.Quit;   end; end;

اين اضع هذا الكود

اين الجدول في الكود و dbgrid


RE: استراد ملف اكسل الى جدول - Ndagor - 18-05-2022

انظر الى المثال المرفق


RE: استراد ملف اكسل الى جدول - tahar1983 - 19-05-2022

(18-05-2022, 10:49 PM)Ndagor كتب : انظر الى المثال المرفق

شكرا ما قصدته هو جلبه الى جدول اكسس موجود مسبقا مثلا جدول الطلبة يحتوي علي 100 طالب اقوم باضافة 200 طالب في اكسل ومعلوماتهم ثم اضيفهم الى جدول اكسس الاول


RE: استراد ملف اكسل الى جدول - Ndagor - 20-05-2022

حسنا يمكن استعمال المثال السابق للاستيراد بيانات اكسل و  ااضافتها الى ملف اكسس ,,,بالفتراض انك تستعمل ADOQuery او ADOTable  فكلاهما  يقوم بنفس الشي ,,,  يمكنك  العمل Transaction لالغاء عملية الاضافة  في حال وقوع خطا في استراد حيث يمكنك الغاء الاضافات الجديدة و البد ء من جديد  بعد تصحيح  البيانات الخطا في الاكسل ....

ملاحظة لاتقم بتغيير الثابت -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;



RE: استراد ملف اكسل الى جدول - tahar1983 - 22-05-2022

(20-05-2022, 01:51 PM)Ndagor كتب : حسنا يمكن استعمال المثال السابق للاستيراد بيانات اكسل و  ااضافتها الى ملف اكسس ,,,بالفتراض انك تستعمل ADOQuery او ADOTable  فكلاهما  يقوم بنفس الشي ,,,  يمكنك  العمل Transaction لالغاء عملية الاضافة  في حال وقوع خطا في استراد حيث يمكنك الغاء الاضافات الجديدة و البد ء من جديد  بعد تصحيح  البيانات الخطا في الاكسل ....

ملاحظة لاتقم بتغيير الثابت -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
اين جدول الاكسس وماهي اعمدته  
ذعلى حساب مافهمت الجدول الاول هو الجدول الاكسل المراد اضافته والكود الثاني هو الذي يقوم باضافة الجدول الى اكسس ولكن عند تطبيق الكود ضهر لي ملف اكسل وليس اكسس


RE: استراد ملف اكسل الى جدول - Ndagor - 22-05-2022

الكود الاخير مجرد مثال يستعمل حقول .col1 col2 col3 قم بتعديل و بادخال اسماء الحقول الموجودة في ملف الاكسس الذي تستخدمه الامر ليس معقد.