كيفية ربط Excel مع Delphi

اذهب الى الأسفل

كيفية ربط Excel مع Delphi

مُساهمة  mah11 في 21/6/2013, 6:39 pm

بسم الله الرحمن الرحيم
والصلاة والسلام على أشرف المرسلين
--------------
هذه محاولة متوضعة



كيفية ربط -Excel- مع -Delphi -

الخطوة الاولى

افتح اكسال
اكتب في الخانات من -A3- الى -A12- اسماء الطلاب
اكتب في الخانات من -B3- الى -B12- لقب الطلاب
اكتب في الخانات من -C3- الى -C12- تاريخ ميلاد
اكتب في الخانات من -D3- الى -D12- الاقسام الطلاب
اكتب في الخانات من -E3- الى -E12- رقم التسجيل
احفظ الملف باسم -bOOK1-

الخكوة الثانية

افتح - Module Base de données - وهذا بنسبة النسخ الفرنسية
والتابعة لدلفي
افتح -Fichier- ثم -Nouveau- ثم -Table- اختر -Paradox 7-
اكتب كما في المثال :
---------------------------------
- Nom de champ- Type - Taille - Index -
---------------------------------
- Num- - A - 10 - 0 -
- Nom - A - 15 - 0 -
- Prenom - A - 20 - 0 -
- Date_Na - A - 10 - 0 -
- Class - A - 15 - 0 -
---------------------------------
ملاحظة لا تكتب الاصفار في -Index-
احفظ الملف باسم -Para01.db-

الخطوة الثلثة
افتح دلفي واحفظ المشروع بأي اسم تختاره مع ملف قاعدة البيانات -Para01.db- أي في نفس المجلد

unit Uk1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, Db,
DBTables, Buttons;

type
TForm1 = class(TForm)
// ضع على الموذج هذه العناصر
Button1: TButton; // عدم تمكين استعمالها أي -Button1.Enabled := false;-
Button2: TButton;
Button3: TButton;
// ضع -Table1- واحد على النموذج -Form1-
Table1: TTable;
// ربط -Table1- بقاعدة البيانات -Para01.db- وذلك من خلال الخصية -TableName- في مفتش الكائنات
// تفعيل الخاصية -Active-
// ضع -- واحد على النموذج -Form1-
// ضع -DataSource1- واحد على النموذج -Form1-
DataSource1: TDataSource;
// ربط -DataSource1- بــ -Table1- وذلك من خلال الخاصية -DataSet-
// ضع -DBNavigator1- واحد على النموذج -Form1-
DBNavigator1: TDBNavigator;
// ربط -DBNavigator1- بــ -DataSource1- وذلك من خلال الخاصية -DataSource -
// ضع -DBGrid1- واحد على النموذج -Form1-
DBGrid1: TDBGrid;
// ربط -DBGrid1- بــ -DataSource1- وذلك من خلال الخاصية -DataSource -
// انقر مرتين على -Table1- داخل المربع انقر باليمنى واختر -Ajouter tous les champs- اغلق المربع
// أي ظهور كافة الحقول وهي
Table1Num: TStringField;
Table1Nom: TStringField;
Table1Prenom: TStringField;
Table1Date_Na: TStringField;
Table1Classe: TStringField;
// مربع تحرير متعددة السطور -Memo1- ضع 5 منه
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
// مربع تحرير ذو السطر واحد -Edit1- ضع 1 منه
Edit1: TEdit;
// ضع -BitBtn1- واحدة
BitBtn1: TBitBtn;
// ضع -OpenDialog1- واحد
OpenDialog1: TOpenDialog;

procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;
Excel10: OleVariant;

implementation
//
// هذه الوحدة خاصة باستدعاء تطبيقات خارجية مثل إكسال ووورد وغيرهم
uses ComObj;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
// تصريح داخل الاجراء --
// تصريح بمتغيير صحيح وهو -i-
var i: integer;
begin
// بداية
try // يحاول أو يجرب فتح
// هذه الدالة لاستدعاء إكسال أو فتح اكسال
Excel10 := GetActiveOleObject('Excel.Application');
except // اذا لم تنجح المحاولة وهي المحاولة الاولى
try // حاول أو يجرب فتح مرة ثانية
Excel10 := CreateOleObject('Excel.Application');
except// اذا لم تنجح المحاولة وهي المحاولة الثانية
// ظهور رسالة
ShowMessage('لايمكن بدأ تشغيل إكسال أو لم يثبت إكسال بعد ?');
// هذه الدالة للخروج من الاجراء نهائيا
Exit;
// نهاية المحاولة الاولى
end;
// نهاية المحاولة الثانية
end;
// هذه الدالة لـ
// فتح المستند المحدد في مربع التحرير
Excel10.Workbooks.Open(Edit1.Text);
// بداية حلقة دوارة من 1 الى 10
for i := 1 to 10 do
// بداية الحلقة
begin
// تعتبر مربعات تحرير المتعددة هذه كــوسائط
// ضع محتوى الحجرات من 1 و 1 الى 1 و 10
Memo1.Lines.add(Excel10.Cells[i, 1].Value);
// ضع محتوى الحجرات من 2 و 1 الى 2 و 10
Memo2.Lines.add(Excel10.Cells[i, 2].Value);
// ضع محتوى الحجرات من 3 و 1 الى 3 و 10
Memo3.Lines.add(Excel10.Cells[i, 3].Value);
// ضع محتوى الحجرات من 4 و 1 الى 4 و 10
Memo4.Lines.add(Excel10.Cells[i, 4].Value);
// ضع محتوى الحجرات من 5 و 1 الى 5 و 10
Memo5.Lines.add(Excel10.Cells[i, 5].Value);
// مثلا الحجرة وهي -cells[1, 1].Value - قيمة الخالية أو الحجرة الممثلة في اكسال بــ -A1-
// نهاية الحلقة
end;
// فتح -Table1-
Table1.Open;
// انتقال الى التسجيلة الاولى في -Table1-
Table1.First;
// بداية حلقة دوارة من 1 الى مجموع سطور مربع التحرير
for i := 0 to Memo1.Lines.Count - 1 do
// عدم وجود فراق في سطور مربع التحريروهو شرط
if Memo1.Lines.Strings[i] <> '' then
begin
// بداية الاظافة الى قاعدة البيانات -Para01.db-
Table1.Append;
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Num-
Table1Num.Value := Memo5.Lines.Strings[i];
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Nom-
Table1Nom.Value := Memo1.Lines.Strings[i];
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Prenom-
Table1Prenom.Value := Memo2.Lines.Strings[i];
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Date-
Table1Date_Na.Value := Memo3.Lines.Strings[i];
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Classe-
Table1Classe.Value := Memo4.Lines.Strings[i];
// تمام الاظافة من اجل تهيئة الى اظافة جديدة
Table1.Post;
// انتقال الى المرحلة التالية
Table1.Next;
// نهاية الحلقة
end;
// نهاية الاجراء
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
// اغلاق إكسال
if not VarIsEmpty(Excel10) then
begin
Excel10.DisplayAlerts := False;
Excel10.Quit;
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Table1.Open;
Table1.First;
while not Table1.Eof do
begin
Table1.Delete;
Table1.Next;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
// مربع حوار فتح
if OpenDialog1.Execute then
// وضع اسم الملف المحدد من مربع الحوار فتح في مربع تحرير
Edit1.Text := OpenDialog1.FileName;
// تفعيل -Button1- بالقيمة -True-
Button1.Enabled := true;
end;

end.

الكود:

unit Uk1;// delph.forumalgerie.net

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,// delph.forumalgerie.net
Forms, Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, Db,// delph.forumalgerie.net
DBTables, Buttons;// delph.forumalgerie.net

type
TForm1 = class(TForm)// delph.forumalgerie.net
// ضع على الموذج هذه العناصر
Button1: TButton; // عدم تمكين استعمالها أي -Button1.Enabled := false;// delph.forumalgerie.net
Button2: TButton;// delph.forumalgerie.net
Button3: TButton;// delph.forumalgerie.net
// ضع -Table1- واحد على النموذج -Form1-
Table1: TTable;// delph.forumalgerie.net
// ربط -Table1- بقاعدة البيانات -Para01.db- وذلك من خلال الخصية -TableName- في مفتش الكائنات
// تفعيل الخاصية -Active-
// ضع -- واحد على النموذج -Form1-
// ضع -DataSource1- واحد على النموذج -Form1-
DataSource1: TDataSource;
// ربط -DataSource1- بــ -Table1- وذلك من خلال الخاصية -DataSet-
// ضع -DBNavigator1- واحد على النموذج -Form1-
DBNavigator1: TDBNavigator;// delph.forumalgerie.net
// ربط -DBNavigator1- بــ -DataSource1- وذلك من خلال الخاصية -DataSource -
// ضع -DBGrid1- واحد على النموذج -Form1-
DBGrid1: TDBGrid;// delph.forumalgerie.net
// ربط -DBGrid1- بــ -DataSource1- وذلك من خلال الخاصية -DataSource -
// انقر مرتين على -Table1- داخل المربع انقر باليمنى واختر -Ajouter tous les champs- اغلق المربع
// أي ظهور كافة الحقول وهي
Table1Num: TStringField;// delph.forumalgerie.net
Table1Nom: TStringField;// delph.forumalgerie.net
Table1Prenom: TStringField;// delph.forumalgerie.net
Table1Date_Na: TStringField;// delph.forumalgerie.net
Table1Classe: TStringField;// delph.forumalgerie.net
// مربع تحرير متعددة السطور -Memo1- ضع 5 منه
Memo1: TMemo;// delph.forumalgerie.net
Memo2: TMemo;// delph.forumalgerie.net
Memo3: TMemo;// delph.forumalgerie.net
Memo4: TMemo;// delph.forumalgerie.net
Memo5: TMemo;// delph.forumalgerie.net
// مربع تحرير ذو السطر واحد -Edit1- ضع 1 منه
Edit1: TEdit;// delph.forumalgerie.net
// ضع -BitBtn1- واحدة
BitBtn1: TBitBtn;// delph.forumalgerie.net
// ضع -OpenDialog1- واحد
OpenDialog1: TOpenDialog;// delph.forumalgerie.net

procedure Button1Click(Sender: TObject);// delph.forumalgerie.net
procedure FormDestroy(Sender: TObject);// delph.forumalgerie.net
procedure Button2Click(Sender: TObject);// delph.forumalgerie.net
procedure Button3Click(Sender: TObject);v
private
public
end;// delph.forumalgerie.net

var
Form1: TForm1;// delph.forumalgerie.net
Excel10: OleVariant;// delph.forumalgerie.net

implementation
//
// هذه الوحدة خاصة باستدعاء تطبيقات خارجية مثل إكسال ووورد وغيرهم
uses ComObj;

{$R *.DFM}// delph.forumalgerie.net

procedure TForm1.Button1Click(Sender: TObject);// delph.forumalgerie.net
// تصريح داخل الاجراء --
// تصريح بمتغيير صحيح وهو -i-
var i: integer;// delph.forumalgerie.net
begin
// بداية
try // يحاول أو يجرب فتح
// هذه الدالة لاستدعاء إكسال أو فتح اكسال
Excel10 := GetActiveOleObject('Excel.Application');// delph.forumalgerie.net
except // اذا لم تنجح المحاولة وهي المحاولة الاولى
try // حاول أو يجرب فتح مرة ثانية
Excel10 := CreateOleObject('Excel.Application');// delph.forumalgerie.net
except// اذا لم تنجح المحاولة وهي المحاولة الثانية
// ظهور رسالة
ShowMessage('
لايمكن بدأ تشغيل إكسال أو لم يثبت إكسال بعد ?
'
)
;
// هذه الدالة للخروج من الاجراء نهائيا
Exit;// delph.forumalgerie.net
// نهاية المحاولة الاولى
end;// delph.forumalgerie.net
// نهاية المحاولة الثانية
end;// delph.forumalgerie.net
// هذه الدالة لـ
// فتح المستند المحدد في مربع التحرير
Excel10.Workbooks.Open(Edit1.Text);
// بداية حلقة دوارة من 1 الى 10
for i := 1 to 10 do
// بداية الحلقة
begin
// تعتبر مربعات تحرير المتعددة هذه كــوسائط
// ضع محتوى الحجرات من 1 و 1 الى 1 و 10
Memo1.Lines.add(Excel10.Cells[i, 1].Value);// delph.forumalgerie.net
// ضع محتوى الحجرات من 2 و 1 الى 2 و 10
Memo2.Lines.add(Excel10.Cells[i, 2].Value);// delph.forumalgerie.net
// ضع محتوى الحجرات من 3 و 1 الى 3 و 10
Memo3.Lines.add(Excel10.Cells[i, 3].Value);// delph.forumalgerie.net
// ضع محتوى الحجرات من 4 و 1 الى 4 و 10
Memo4.Lines.add(Excel10.Cells[i, 4].Value);// delph.forumalgerie.net
// ضع محتوى الحجرات من 5 و 1 الى 5 و 10
Memo5.Lines.add(Excel10.Cells[i, 5].Value);// delph.forumalgerie.net
// مثلا الحجرة وهي -cells[1, 1].Value - قيمة الخالية أو الحجرة الممثلة في اكسال بــ -A1-
// نهاية الحلقة
end;// delph.forumalgerie.net
// فتح -Table1-
Table1.Open;// delph.forumalgerie.net
// انتقال الى التسجيلة الاولى في -Table1-
Table1.First;// delph.forumalgerie.net
// بداية حلقة دوارة من 1 الى مجموع سطور مربع التحرير
for i := 0 to Memo1.Lines.Count - 1 do
// عدم وجود فراق في سطور مربع التحريروهو شرط
if Memo1.Lines.Strings[i] <> '' then
begin
// بداية الاظافة الى قاعدة البيانات -Para01.db-
Table1.Append;// delph.forumalgerie.net
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Num-
Table1Num.Value := Memo5.Lines.Strings[i];// delph.forumalgerie.net
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Nom-
Table1Nom.Value := Memo1.Lines.Strings[i];// delph.forumalgerie.net
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Prenom-
Table1Prenom.Value := Memo2.Lines.Strings[i];// delph.forumalgerie.net
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Date-
Table1Date_Na.Value := Memo3.Lines.Strings[i];// delph.forumalgerie.net
// وضع محتوى سطور من 1 الى مجموع السطور في الحقل -Classe-
Table1Classe.Value := Memo4.Lines.Strings[i];// delph.forumalgerie.net
// تمام الاظافة من اجل تهيئة الى اظافة جديدة
Table1.Post;// delph.forumalgerie.net
// انتقال الى المرحلة التالية
Table1.Next;// delph.forumalgerie.net
// نهاية الحلقة
end;// delph.forumalgerie.net
// نهاية الاجراء
end;// delph.forumalgerie.net

procedure TForm1.FormDestroy(Sender: TObject);// delph.forumalgerie.net
begin
// اغلاق إكسال
if not VarIsEmpty(Excel10) then
begin
Excel10.DisplayAlerts := False;// delph.forumalgerie.net
Excel10.Quit;// delph.forumalgerie.net
end;// delph.forumalgerie.net

end;// delph.forumalgerie.net

procedure TForm1.Button2Click(Sender: TObject);// delph.forumalgerie.net
begin
Table1.Open;// delph.forumalgerie.net
Table1.First;// delph.forumalgerie.net
while not Table1.Eof do
begin
Table1.Delete;// delph.forumalgerie.net
Table1.Next;// delph.forumalgerie.net
end;// delph.forumalgerie.net
end;// delph.forumalgerie.net

procedure TForm1.Button3Click(Sender: TObject);// delph.forumalgerie.net
begin
// مربع حوار فتح
if OpenDialog1.Execute then
// وضع اسم الملف المحدد من مربع الحوار فتح في مربع تحرير
Edit1.Text := OpenDialog1.FileName;// delph.forumalgerie.net
// تفعيل -Button1- بالقيمة -True-
Button1.Enabled := true;// delph.forumalgerie.net
end;// delph.forumalgerie.net

end.// delph.forumalgerie.net


عدل سابقا من قبل mah11 في 23/5/2015, 12:51 pm عدل 1 مرات

mah11
Admin

عدد المساهمات : 364
تاريخ التسجيل : 21/06/2013

http://delph.forumalgerie.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  زائر في 4/1/2014, 7:43 pm


موضـــــوع رائع شكرا لك

زائر
زائر


الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  mah11 في 5/1/2014, 8:00 pm

مشكور على الرد

mah11
Admin

عدد المساهمات : 364
تاريخ التسجيل : 21/06/2013

http://delph.forumalgerie.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  sad13 في 30/1/2014, 7:33 pm

جزاك الله كل خير

sad13
مبرمج

عدد المساهمات : 53
تاريخ التسجيل : 04/01/2014

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  rida10 في 3/2/2014, 7:15 pm

بارك الله فيك

rida10
مبتدئ في البرمجة

عدد المساهمات : 21
تاريخ التسجيل : 01/02/2014

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  rida10 في 3/2/2014, 7:16 pm

بارك الله فيك

rida10
مبتدئ في البرمجة

عدد المساهمات : 21
تاريخ التسجيل : 01/02/2014

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  rida10 في 3/2/2014, 7:16 pm

بارك الله فيك

rida10
مبتدئ في البرمجة

عدد المساهمات : 21
تاريخ التسجيل : 01/02/2014

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  kiko123 في 28/4/2014, 10:49 pm

شكرا
من فضلك اريد هذا المثال كبرنامج ان استطعت
مشكور اخي العزيز

kiko123

عدد المساهمات : 1
تاريخ التسجيل : 27/04/2014

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  mah11 في 29/4/2014, 8:46 pm

kiko123 كتب:شكرا
من فضلك اريد هذا المثال كبرنامج ان استطعت
مشكور اخي العزيز

بسم الله

سأضعه غـــدا ان شاءالله
أي الكود فقط وتصميم يبق عليك وشكرا

mah11
Admin

عدد المساهمات : 364
تاريخ التسجيل : 21/06/2013

http://delph.forumalgerie.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  mah11 في 30/4/2014, 8:14 pm


والصلاة والسلام على أشرف المرسلين

كيفية ربط -Excel- مع -Delphi -


unit Uk1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, Db,
DBTables, Buttons;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Table1: TTable;
DataSource1: TDataSource;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
Table1Num: TStringField;
Table1Nom: TStringField;
Table1Prenom: TStringField;
Table1Date_Na: TStringField;
Table1Classe: TStringField;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
Edit1: TEdit;
BitBtn1: TBitBtn;
OpenDialog1: TOpenDialog;

procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;
Excel10: OleVariant;

implementation

uses ComObj;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
try
Excel10 := GetActiveOleObject('Excel.Application');
excep
try
Excel10 := CreateOleObject('Excel.Application');
except
ShowMessage('لايمكن بدأ تشغيل إكسال أو لم يثبت إكسال بعد ?');
Exit;
end;
end;
Excel10.Workbooks.Open(Edit1.Text);
for i := 1 to 10 do
begin
Memo1.Lines.add(Excel10.Cells[i, 1].Value);
Memo2.Lines.add(Excel10.Cells[i, 2].Value);
Memo3.Lines.add(Excel10.Cells[i, 3].Value);
Memo4.Lines.add(Excel10.Cells[i, 4].Value);
Memo5.Lines.add(Excel10.Cells[i, 5].Value);
end;
Table1.Open;
Table1.First;
for i := 0 to Memo1.Lines.Count - 1 do
if Memo1.Lines.Strings[i] <> '' then
begin
Table1.Append;
Table1Num.Value := Memo5.Lines.Strings[i];
Table1Nom.Value := Memo1.Lines.Strings[i];
Table1Prenom.Value := Memo2.Lines.Strings[i];
Table1Date_Na.Value := Memo3.Lines.Strings[i];
Table1Classe.Value := Memo4.Lines.Strings[i];
Table1.Post;
Table1.Next;
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if not VarIsEmpty(Excel10) then
begin
Excel10.DisplayAlerts := False;
Excel10.Quit;
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Table1.Open;
Table1.First;
while not Table1.Eof do
begin
Table1.Delete;
Table1.Next;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit1.Text := OpenDialog1.FileName;
Button1.Enabled := true;
end;

end.

mah11
Admin

عدد المساهمات : 364
تاريخ التسجيل : 21/06/2013

http://delph.forumalgerie.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية ربط Excel مع Delphi

مُساهمة  sdk11 في 13/6/2015, 9:18 am

بارك الله فيك

sdk11
مبرمج مجتهد

عدد المساهمات : 108
تاريخ التسجيل : 19/09/2014

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى