Excel من دلفي عبر ADO
#11
السلام علكيم
اخيLam.Abdeldjalil
اردت في بادئ الامر القيام ببرنامح فيه كل من scExcelExpor و ado لنقل البيانات ولكن فيما بعد وضعتهما كل على حدى
الرد
#12
و عليكم السلام
أعتذر لأني لم أدقق جيدا في مثالك

لكنه يحمل نفس فكرة الأستاذ kachwahed أي الإتصال بـ Excel
ولا يحتوي على ما سميته بـ "التحويل من excel الى paradox بواسطة ado " ؟؟
الرد
#13
السلام عليكم
نعم اخيLam.Abdeldjalil
الرد
#14
السلام عليكم:
لمن أراد معرفة الإتصال عن طريق ADO بالإكسل 2010

كود:
PHP كود :
var
     
strConn :  widestring;
     
ThePath:String;
begin

     
IF OpenDialog1.Execute then ThePath:=OpenDialog1.FileName;
 
strConn:='Provider=Microsoft.ACE.OLEDB.12.0;' +
           
'Data Source=' ThePath ';' +
           
'Extended Properties="Excel 12.0;HDR=YES;"';//  Data Source=c:\myFolder\myExcel2007file.xlsx;Extended ;

{   strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' +
           
'Data Source=' ThePath ';' +
           
'Extended Properties=Excel 8.0;';     }
  
ADOConnection1.Connected:=False;
  
AdoConnection1.ConnectionString:=strConn;
  try
    
AdoConnection1.Open;
    
AdoConnection1.GetTableNames(ComboBox1.Items,True);
  
except
    ShowMessage
('Unable to connect to Excel, make sure the workbook ' ComboBox1.Text ' exist!');
    
raise;
  
end
الرد
#15
السلام عليكم

هل يمكنك اضافة خاصية البحث في قاعدة البيانات و شكراا
الرد
#16
بارك الله فيكم جميعا
الرد
#17
السلام عليكم
هذا تابع يقوم بتحويل محتويات datasource الى ملف word
كود :
procedure create_file(filnam:string;mnth,yer,mntq,kem,aml:string);
var
  WordApp, NewDoc, WordTable: Variant;
  iRows, iCols, iGridRows, jGridCols: Integer;
begin
  try
    WordApp := CreateOleObject('Word.Application');
  except
    Exit;
  end;
   WordApp.Documents.Open(filnam);
  // WordApp.Documents.Add;
  NewDoc := WordApp.ActiveDocument;
  WordApp.ActiveDocument.Range.Font.Name := 'Times New Roman';
  WordApp.ActiveDocument.Range.Font.size:= 10;
  WordApp.ActiveDocument.Range.Bold := True;

  WordApp.Selection.range.ParagraphFormat.Alignment :=wdAlignParagraphright;

  iCols :=frm_kafel_to_kfl.DataSource1.DataSet.RecordCount+1;
  iRows := 12;

  WordApp.Selection.Range.pagesetup.rightmargin:=10;
  WordApp.Selection.Range.pagesetup.leftmargin:=10;
  WordApp.Selection.Range.pagesetup.TopMargin:=150;
  WordApp.Selection.Range.pagesetup.BottomMargin:=150;
  frm_kafel_to_kfl.ProgressBar1.Min:=0;
  frm_kafel_to_kfl.ProgressBar1.max:=(frm_kafel_to_kfl.DataSource1.DataSet.RecordCount+1)*12;
  frm_kafel_to_kfl.ProgressBar1.Position :=0;


  WordApp.Selection.TypeText('                                                                                                                    السلام عليكم');
  WordApp.Selection.TypeText(#13#10#13#10);
  WordApp.Selection.TypeParagraph;
  WordApp.Selection.TypeText('      السلام عليكم  ('+mnth+')       السلام عليكم   ('+yer+')       السلام عليكم  ('+mntq+')      السلام عليكم  ('+kem+')       السلام عليكم('+aml+')');
  WordApp.Selection.TypeText(#13#10#13#10);
  WordApp.ActiveDocument.Range.Bold := true;

  WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iCols, iRows);

  NewDoc.Tables.Item(1).Columns.Item(1).SetWidth(25,0);//  م
  NewDoc.Tables.Item(1).Columns.Item(2).SetWidth(45,0);//   السلام عليكم
  NewDoc.Tables.Item(1).Columns.Item(3).SetWidth(70,0);//  السلام عليكم  
  NewDoc.Tables.Item(1).Columns.Item(4).SetWidth(50,0);//   السلام عليكم
  NewDoc.Tables.Item(1).Columns.Item(5).SetWidth(50,0);//  السلام عليكم
  NewDoc.Tables.Item(1).Columns.Item(6).SetWidth(50,0);//   السلام عليكم
  NewDoc.Tables.Item(1).Columns.Item(7).SetWidth(80,0);//   السلام عليكم
  NewDoc.Tables.Item(1).Columns.Item(8).SetWidth(85,0);//   السلام عليكم
  NewDoc.Tables.Item(1).Columns.Item(9).SetWidth(130,0);//  العنوان
  NewDoc.Tables.Item(1).Columns.Item(10).SetWidth(85,0);//  السلام عليكم
  NewDoc.Tables.Item(1).Columns.Item(11).SetWidth(70,0);//   السلام عليكم

  WordTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  WordTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  WordTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  WordTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
  WordTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle;
  WordTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle;

  WordTable.Cell(1,1).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,1).Range.Font.Size := 10;
  WordTable.Cell(1,1).Range.Font.Bold := true;
  WordTable.Cell(1,1).Range.Text :='م';

  WordTable.Cell(1,2).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,2 ).Range.Text :='رقم استمارة اليتيم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,3).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,3 ).Range.Text :=' السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,4).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,4 ).Range.Text :=' السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,5).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,5 ).Range.Text :=' السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,6).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,6 ).Range.Text :=' السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,7).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,7 ).Range.Text :=' السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,8).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,8 ).Range.Text :=' السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,9).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,9 ).Range.Text :='ا السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,10).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,10 ).Range.Text :=' السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,11).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,11 ).Range.Text :='ا السلام عليكم';
  frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
  Application.ProcessMessages;

  WordTable.Cell(1,12).Range.Paragraphs.Alignment := 4;
  WordTable.Cell(1,12 ).Range.Text :=' السلام عليكم';

  if iCols>1 then
    frm_kafel_to_kfl.DataSource1.DataSet.First;
    for jGridCols := 2 to iCols do
    begin

        WordTable.Cell(jGridCols,1).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,1 ).Range.Text :=inttostr(jGridCols-1);
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,2).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,2 ).Range.Text :=     frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('y_id').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,3).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,3 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('y_f_name').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,4).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,4 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('y_l_name').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,5).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,5 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('f_name').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,6).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,6 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('y_mather').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,7).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,7 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('y_birth_date').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,8).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,8 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('m_mobil').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,9).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,9 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('m_address').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,10).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,10 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('istlam_date').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;

        WordTable.Cell(jGridCols,11).Range.Paragraphs.Alignment := 4;
        WordTable.Cell(jGridCols,11 ).Range.Text := frm_kafel_to_kfl.DataSource1.DataSet.FieldByName('mst_f_name').AsString;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;
        WordTable.Cell(jGridCols,12 ).Range.Text :=  '';
        frm_kafel_to_kfl.DataSource1.DataSet.Next;
        frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.Position +1;
        Application.ProcessMessages;
    end;

    WordApp.ActiveDocument.Range. InsertAfter(#13#10'        السلام عليكم                                                         أ السلام عليكم          السلام عليكم                '   );
    WordApp.Selection.range.ParagraphFormat.Alignment :=wdAlignParagraphLeft;

    frm_kafel_to_kfl.ProgressBar1.Position :=frm_kafel_to_kfl.ProgressBar1.max;
    Application.ProcessMessages;
    NewDoc.Saveas(filnam, False) ;
    WordApp.Quit(False);

end;
الرد
#18
kachwahed كتب :
لأسباب أمنية قامت microsoft بإضافة imex=1 لمنع التعديل
PHP كود :
http://support.microsoft.com/kb/904953/en 
جعلتها صفر لنتمكن من التعديل/الإضافة
.


شكرا على المقال أخى
imex=1 للسماح بنصوص و أرقام (بيانات مختلفة الأنواع) فى نفس الحقل أو العمود
imex=0 لا تسمح إلا بنوع واحد من البيانات فى العامود الواحد

جرب بنفسك و ستعرف
خالص تقديرى
الرد


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


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