التحكم في ميكروسفت إكسل باستعمال الدلفي :

يمكن نقل البينات من الدلفي إلى مايكروسفت إكسل أو العكس باستخدام لغة البرمجة دلفي
وحتى نتمكن من ذلك يجب أن تتوفر الشروط التالية:
أولا : أن يكون إكسل مثبت بالجهاز.

ثانيا : يكون العنصر 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;
يمكن تحميل الكود على الرابط التالي : رابط التحميل

المشاركات الشائعة