يمكن نقل البينات من الدلفي إلى مايكروسفت إكسل أو العكس باستخدام لغة البرمجة دلفي
وحتى نتمكن من ذلك يجب أن تتوفر الشروط التالية:
أولا : أن يكون إكسل مثبت بالجهاز.
ثانيا : يكون العنصر TExcelApplication مثبت ببرنامج الدلفي. وللقيام بذلك نستعمل قائمة المركبات كما هو موضح في الشكل التالي:
وحتى نتمكن من ذلك يجب أن تتوفر الشروط التالية:
أولا : أن يكون إكسل مثبت بالجهاز.
ثانيا : يكون العنصر TExcelApplication مثبت ببرنامج الدلفي. وللقيام بذلك نستعمل قائمة المركبات كما هو موضح في الشكل التالي:
بعدها ننشط الخانة الخاصة بنسخة مايكروسوفت كما هو موضح في الشكل التالي:
فنتحصل على المجموعة servers ضمن قائمة الأدوات كما هو مبين في الشكل التالي :
ثالثا : نقوم بإدراج العنصر TExcelApplication على الفورم :
- لربط الدلفي بأكسل نستعمل الكود التالي
ExcelApplication1.Connect;
-
لإضافة مصنف جديد WorkBook نستعمل الكود التالي :
ExcelApplication1.Workbooks.Add(emptyparam, 0);
-
لجعل عرض الصفحة من اليمين إلى اليسار نستعمل الكود التالي :
ExcelApplication1.ActiveWindow._DisplayRightToLeft := true;
- لوضع نص في خلية معينة نستعمل أمر مشابه لما يلي :
ExcelApplication1.Range['A1', 'A1'].Value2 := Edit1.Text;
حيث [
Range['A1', 'A1'
. تشير إلى الخلية A1 في مايكروسفت إكسال
و العبارة Edit1.Text تحتوي على النص الذي سيكتب في الخلية المذكورة.
- لقراءة اسم ورقة إكسال نستعمل الكود التالي :
MaFeuille := ExcelApplication1.Worksheets[1] as _Worksheet;
Edit1.Text := MaFeuille.Name;
سيتم تخزين اسم الورقة في خانة النص Edit1 في الفورم.
- لقراءة محتوي خلية معينة على الورقة نستعمل كود مشابه لما يلي :
StringGrid1.Cells[0,i] := ExcelApplication1.Range['A' + inttostr(i),
'A' + inttostr(i)].Value2;
حيث i عدد صحيح Integer.
Var i:Integer;
مثال عن كيفية التحكم في مايكوسفت إكسال باستعمال لغة البرمجة دلفي :
-نستعمل العناصر الموضحة في الشكل التالي :
-نستعمل العناصر الموضحة في الشكل التالي :
ونقوم بتحرير الكود التالي :
procedure TForm6.Button1Click(Sender: TObject); var i, n, j: integer; MaFeuille: _Worksheet; begin Try windowstate := wsminimized; ExcelApplication1.Connect; ExcelApplication1.Workbooks.Add(emptyparam, 0); ExcelApplication1.ActiveWindow._DisplayRightToLeft := true; ExcelApplication1.Range['A1', 'A1'].Value2 := Edit1.Text; ExcelApplication1.Range['A1', 'G1'].MergeCells := true; ExcelApplication1.Range['A1', 'G1'].HorizontalAlignment := xlCenter; With ExcelApplication1.Range['A1', 'G1'].font do Begin Name := '"Times New Roman"'; // اسم الخط Size := 16; // الحجم Underline := true; // تسطير bold := true; // عريض color := clred; // لون أحمر End; i := 10; while i < 20 do begin With ExcelApplication1.Range['A' + inttostr(i), 'e' + inttostr(i) ].Borders do begin LineStyle := xlContinuous; ColorIndex := xlAutomatic; Weight := xlThin End; ExcelApplication1.Range['A' + inttostr(i), 'A' + inttostr(i) ].Value2 := i - 9; ExcelApplication1.Range['b' + inttostr(i), 'b' + inttostr(i)].Value2 := 'سلعة' + inttostr(i - 9); ExcelApplication1.Range['c' + inttostr(i), 'c' + inttostr(i)].Value2 := 100 * random(i)+100; ExcelApplication1.Range['d' + inttostr(i), 'd' + inttostr(i)].Value2 := 500 * random(i)+550; // e:=c*d; ExcelApplication1.Range['e' + inttostr(i), 'e' + inttostr(i)].Value2 := ExcelApplication1.Range['c' + inttostr(i), 'c' + inttostr(i)].Value2 * ExcelApplication1.Range['d' + inttostr(i), 'd' + inttostr(i)].Value2; i := i + 1; end; n := i; j := 1; StringGrid1.RowCount := n; for i := 10 to n - 1 do begin StringGrid1.Cells[0, j] := ExcelApplication1.Range['A' + inttostr(i), 'A' + inttostr(i)].Value2; StringGrid1.Cells[1, j] := ExcelApplication1.Range['b' + inttostr(i), 'b' + inttostr(i)].Value2; StringGrid1.Cells[2, j] := ExcelApplication1.Range['c' + inttostr(i), 'c' + inttostr(i)].Value2; StringGrid1.Cells[3, j] := ExcelApplication1.Range['d' + inttostr(i), 'd' + inttostr(i)].Value2; StringGrid1.Cells[4, j] := ExcelApplication1.Range['e' + inttostr(i), 'e' + inttostr(i)].Value2; j := j + 1; end; MaFeuille := ExcelApplication1.Worksheets[1] as _Worksheet; Edit1.Text := MaFeuille.Name; ExcelApplication1.Visible[0] := true; Except Raise; End; end; procedure TForm6.ExcelApplication1WorkbookDeactivate(ASender: TObject; const Wb: _Workbook); begin windowstate := wsmaximized; end; procedure TForm6.FormCreate(Sender: TObject); begin Button1.Caption := 'إكسل'; end;
يمكن تحميل الكود على الرابط التالي :
رابط التحميل