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

تفضل

https://www.youtube.com/watch?v=fDoeSSRw...5E&index=5

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

https://www.youtube.com/watch?v=Hi1Agzy1...DJ&index=6

لا أدري إن كان هناك مكون أو كمبونانت يفي بالغرض المطلوب دون العناء أرجو من له علم أن يساعد
الرد
#3
كود :
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;
الرد
#4
(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;

اين اضع هذا الكود
الرد
#5
(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
الرد
#6
انظر الى المثال المرفق


الملفات المرفقة
.zip   xlConnection.zip (الحجم : 100.38 ك ب / التحميلات : 62)
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • tahar1983
الرد
#7
(18-05-2022, 10:49 PM)Ndagor كتب : انظر الى المثال المرفق

شكرا ما قصدته هو جلبه الى جدول اكسس موجود مسبقا مثلا جدول الطلبة يحتوي علي 100 طالب اقوم باضافة 200 طالب في اكسل ومعلوماتهم ثم اضيفهم الى جدول اكسس الاول
الرد
#8
حسنا يمكن استعمال المثال السابق للاستيراد بيانات اكسل و  ااضافتها الى ملف اكسس ,,,بالفتراض انك تستعمل 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;
الرد
#9
(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
اين جدول الاكسس وماهي اعمدته  
ذعلى حساب مافهمت الجدول الاول هو الجدول الاكسل المراد اضافته والكود الثاني هو الذي يقوم باضافة الجدول الى اكسس ولكن عند تطبيق الكود ضهر لي ملف اكسل وليس اكسس
الرد
#10
الكود الاخير مجرد مثال يستعمل حقول .col1 col2 col3 قم بتعديل و بادخال اسماء الحقول الموجودة في ملف الاكسس الذي تستخدمه الامر ليس معقد.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم