delphi4arab منتديات دلفي للعرب

نسخة كاملة : تصدير قواعد البيانات لملف الإكسل
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله وبركاته ،
في الحقيقة هذا الموضوع طرحه أحد الإخوة القدامى أظنه مروان او الأخ MusK .
لكن مع الترقية الجديدة للمنتدى لم يعد بالإمكان مشاهدة الموضوع.
وحتى يبقى الأجر متواصل لصاحب الموضوع (وأسأل الله أن يجعل لي نصيبا من الأجر).
هذا الموضوع هو كيفية تصدير قواعد البيانات إلى ملف الإكسل. و هو برنامج رائع لا يحتاج إلى مكونات إضافية.
سلام عليكم
بارك الله فيك
لاكن يوجد مشكلة في التاريخ
مثال 12/02/2018 عندما اقوم بتصدير البيانات الي exel يحول التاريخ الى 02/12/2018
من فظلك اريد المساعدة في حل هاذا المشكل
شكرا
السلام عليكم ورحمة الله وبركاته ،
كانت لدي نفس المشكلة في تصدير التواريخ ،
وحلها هو كالتالي :
لابد من معرفة نوع الحقل قبل تصديره ،
فمثلا :
هذا الكود استعمله في تصدير DBGRID إلى EXCEL  (ويعكس إظهار التواريخ)
كود :
procedure TFMonEtat.Button3Click(Sender: TObject); var Tab: _workbook;     Feuil: _worksheet;     i,j:Integer;     S:shortstring; begin    try     ExcelApplication1.Connect;     ExcelApplication1.Visible[0]:=False;     Tab:=ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0);     //ExcelApplication1.Visible[0]:=true;     feuil:=Tab.Worksheets[1] as _worksheet;           For i:=0 to DBGrid1.Columns.Count-1 do           begin             with Feuil.Range[MonTableau[i+1]+'1',MonTableau[i+1]+'1'] do             begin               Value[xlRangeValueDefault]:= DBGrid1.Columns.Items[i].Title.Caption;               Font.Name:='times new roman';               Font.Size:=10;               Font.Bold:=True;              With Interior do              begin                   ColorIndex := 15;                   Pattern := xlSolid;                   PatternColorIndex := xlAutomatic;              End;              With Borders do              begin                   LineStyle := xlContinuous;                   Weight := xlThin;                   ColorIndex := xlAutomatic;              End;             end;           end;           j:=2;           xQuery1.First;           While not xQuery1.Eof do           begin              For i:= 1 To  DBGrid1.Columns.Count Do              begin                 s := MonTableau[i]+inttostr(j);                Feuil.Range[s,s].Value[xlRangeValueDefault] :=DBGrid1.Fields[i-1].AsString;              end;              xQuery1.Next;              j:=j+1;           end;        finally           SUIMsgDlg(' Exportation des données Terminée . ','MyApp',mtInformation,[mbOK],suiMessageDialog1.UIStyle);         ExcelApplication1.Visible[0]:=true;         ExcelApplication1.Cells.Select;         ExcelApplication1.Columns.AutoFit;         ExcelApplication1.Range['A1','A1'].Select;         ExcelApplication1.Disconnect;    end;   end;



وحلها كالتالي :

                               
كود :
                if DBGrid1.Fields[i-1].DataType  = ftCurrency then                 begin                    //Feuil.Range[s,s].NumberFormat  := '#,##0.00';                    Feuil.Range[s,s].Value[xlRangeValueDefault] := DBGrid1.Fields[i-1].AsCurrency;                 end                 else                     if DBGrid1.Fields[i-1].DataType  in [ftDate,ftDateTime] then                     begin                        Feuil.Range[s,s].NumberFormat  := 'jj/mm/aaaa';                        Feuil.Range[s,s].Value[xlRangeValueDefault] := DBGrid1.Fields[i-1].AsDateTime;                     end                     else                       begin                          Feuil.Range[s,s].NumberFormat  := 'Text';                          Feuil.Range[s,s].Value[xlRangeValueDefault] := '''' + DBGrid1.Fields[i-1].AsString;                       end ;

عسى أن تنفع الإخوة ،
بالتوفيق.
(08-04-2016, 09:41 AM)أبو معاذ كتب : [ -> ]في الحقيقة هذا الموضوع طرحه أحد الإخوة القدامى أظنه مروان او الأخ MusK .
لكن مع الترقية الجديدة للمنتدى لم يعد بالإمكان مشاهدة الموضوع.
السلام عليكم
لم يضع شيئ...الموضوع الذي تقصده موجود هنا

http://delphi4arab.net/forum/showthread.php?tid=136
السلام عليكم
اشكرك اخي أبو معاذ علي الرد لاكن اخي هذا الكود
if DBGrid1.Fields[i-1].DataType = ftCurrency then
begin
//Feuil.Range[s,s].NumberFormat := '#,##0.00';
Feuil.Range[s,s].Value[xlRangeValueDefault] := DBGrid1.Fields[i-1].AsCurrency;
end
else
if DBGrid1.Fields[i-1].DataType in [ftDate,ftDateTime] then
begin
Feuil.Range[s,s].NumberFormat := 'jj/mm/aaaa';
Feuil.Range[s,s].Value[xlRangeValueDefault] := DBGrid1.Fields[i-1].AsDateTime;
end
اين اظعه
هكذا

PHP كود :
procedure TFMonEtat.Button3Click(Sender: TObject);
var 
Tab: _workbook;
 
   Feuil: _worksheet;
 
   i,j:Integer;
 
   S:shortstring;
begin
   
try
 
   ExcelApplication1.Connect;
 
   ExcelApplication1.Visible[0]:=False;
 
   Tab:=ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0);
 
   //ExcelApplication1.Visible[0]:=true;
 
   feuil:=Tab.Worksheets[1] as _worksheet;
 
         For i:=0 to DBGrid1.Columns.Count-1 do
 
         begin
            with Feuil
.Range[MonTableau[i+1]+'1',MonTableau[i+1]+'1'] do
 
           begin
              Value
[xlRangeValueDefault]:= DBGrid1.Columns.Items[i].Title.Caption;
 
             Font.Name:='times new roman';
 
             Font.Size:=10;
 
             Font.Bold:=True;
 
            With Interior do
 
            begin
                  ColorIndex 
:= 15;
 
                 Pattern := xlSolid;
 
                 PatternColorIndex := xlAutomatic;
 
            End;
 
            With Borders do
 
            begin
                  LineStyle 
:= xlContinuous;
 
                 Weight := xlThin;
 
                 ColorIndex := xlAutomatic;
 
            End;
 
           end;
 
         end;
 
         j:=2;
 
         xQuery1.First;
 
         While not xQuery1.Eof do
 
         begin
             
For i:= 1 To  DBGrid1.Columns.Count Do
 
            begin
                s 
:= MonTableau[i]+inttostr(j);
 
              if DBGrid1.Fields[i-1].DataType  = ftCurrency then
                begin
                   Feuil
.Range[s,s].NumberFormat  := '#,##0.00';
 
                  Feuil.Range[s,s].Value[xlRangeValueDefault] := DBGrid1.Fields[i-1].AsCurrency;
 
               end
                else
                    if DBGrid1
.Fields[i-1].DataType  in [ftDate,ftDateTime] then
                    begin
                       Feuil
.Range[s,s].NumberFormat  := 'dd/mm/yyyy'; 
 
                      Feuil.Range[s,s].Value[xlRangeValueDefault] := DBGrid1.Fields[i-1].AsDateTime;
 
                   end
                    else
                      begin
                         Feuil
.Range[s,s].NumberFormat  := 'Text';
 
                        Feuil.Range[s,s].Value[xlRangeValueDefault] := '''' + DBGrid1.Fields[i-1].AsString;
 
                     end ;
 
            end;
 
            xQuery1.Next;
 
            j:=j+1;
 
         end;
 
 
 
  finally
 
 
       SUIMsgDlg(' Exportation des données Terminée . ','MyApp',mtInformation,[mbOK],suiMessageDialog1.UIStyle);
 
       ExcelApplication1.Visible[0]:=true;
 
       ExcelApplication1.Cells.Select;
 
       ExcelApplication1.Columns.AutoFit;
 
       ExcelApplication1.Range['A1','A1'].Select;
 
       ExcelApplication1.Disconnect;
 
  end;
 
end; 
سلام عليكم
بارك الله فيك اخي ben. ja على الرد
لاكن الكود فيه مشكلة من فظلك لو تعيد النظر فيه
شكرا
ما الخطأ الذي حدث لك؟ صور ان استطعت
لا تنسى ذكر الوحدات هته في الجزء uses
 OleServer, ExcelXP, ExtCtrls
السلام عليكم
اشكرك اخي ben . ja علي الرد مرى اخرى
هذا هو الكود    في form اريد ان اعرف اين الخلل
كود :
unit Unit9; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, unit Unit9; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Mask, DB, DBTables, Grids, DBGrids, DBCtrls, Buttons,  ComCtrls, ExtCtrls, OleServer, ExcelXP, Menus, ImgList, acAlphaImageList,  sBitBtn, sEdit, sSpeedButton, sGroupBox; type  TForm9 = class(TForm)    DBGrid1: TDBGrid;    DateTimePicker1: TDateTimePicker;    DateTimePicker2: TDateTimePicker;    Query1: TQuery;    ExcelApplication1: TExcelApplication;    OpenDialog1: TOpenDialog;    Label1: TLabel;    Label2: TLabel;    MainMenu1: TMainMenu;    Menu1: TMenuItem;    Fermer1: TMenuItem;    Table1: TTable;    Table2: TTable;    DataSource1: TDataSource;    DataSource2: TDataSource;    Table2nbjour: TFloatField;    Table2nbbon: TFloatField;    Table2prgz: TFloatField;    Table2tarif: TFloatField;    Table2prixord: TFloatField;    Query1nbjour: TFloatField;    Query1prixord: TFloatField;    SpeedButton1: TSpeedButton;    Label3: TLabel;    SpeedButton2: TSpeedButton;    Label4: TLabel;    Label5: TLabel;    SpeedButton3: TSpeedButton;    SpeedButton5: TSpeedButton;    Label7: TLabel;    PopupMenu1: TPopupMenu;    AjouterMatrucule1: TMenuItem;    popimgs: TsAlphaImageList;    Table1Nord: TIntegerField;    Table1dateor: TDateTimeField;    Table1mat: TStringField;    Table1prix: TIntegerField;    Table1charg: TStringField;    Table1priklm: TIntegerField;    Table1Nom: TStringField;    Table1typc: TStringField;    Table2Nord: TIntegerField;    Table2desti: TStringField;    Table2klm: TIntegerField;    Table2Datd: TDateTimeField;    Table2mat: TStringField;    Table2Prklm: TStringField;    Query1Nord: TIntegerField;    Query1desti: TStringField;    Query1klm: TIntegerField;    Query1Datd: TDateTimeField;    Query1mat: TStringField;    Query1Non: TStringField;    Query1Prklm: TStringField;    Query1chgz: TIntegerField;    Query1nbbon: TIntegerField;    Query1Marque: TStringField;    Query1Ncat: TStringField;    Query1prgz: TFloatField;    sBitBtn1: TsBitBtn;    Query1Ecare: TFloatField;    sSpeedButton1: TsSpeedButton;    sEdit1: TsEdit;    Label6: TLabel;    sBitBtn2: TsBitBtn;    Query1charg: TStringField;    sRadioGroup1: TsRadioGroup;    sEdit2: TsEdit;    sEdit3: TsEdit;    sEdit4: TsEdit;    procedure DateTimePicker2Change(Sender: TObject);    procedure FormActivate(Sender: TObject);    procedure FormClose(Sender: TObject; var Action: TCloseAction);    procedure DBGrid1TitleClick(Column: TColumn);    procedure Fermer1Click(Sender: TObject);    procedure Table2CalcFields(DataSet: TDataSet);    procedure SpeedButton1Click(Sender: TObject);    procedure SpeedButton2Click(Sender: TObject);    procedure SpeedButton3Click(Sender: TObject);    procedure Query1CalcFields(DataSet: TDataSet);    procedure SpeedButton5Click(Sender: TObject);    procedure AjouterMatrucule1Click(Sender: TObject);    procedure sBitBtn1Click(Sender: TObject);    procedure sSpeedButton1Click(Sender: TObject);    procedure sBitBtn2Click(Sender: TObject);  private    { Déclarations privées }        { Déclarations publiques }  end; var  Form9: TForm9;  MyFile: String;  a:array [1..26]of string[1]=('A','B','C','D','E','F','G','H','I','J','K','L',                       'M','N','O','P','Q','R','S','T','u','V','W','X','Y','Z'); implementation uses Unit7, Unit3, Unit26; {$R *.dfm} procedure TForm9.sBitBtn2Click(Sender: TObject); var Tab: _workbook;    Feuil: _worksheet;    i,j:Integer;    S:shortstring; begin   try    ExcelApplication1.Connect;    ExcelApplication1.Visible[0]:=False;    Tab:=ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0);    //ExcelApplication1.Visible[0]:=true;    feuil:=Tab.Worksheets[1] as _worksheet;          For i:=0 to DBGrid1.Columns.Count-1 do          begin            with Feuil.Range[A[i+1]+'1',A[i+1]+'1'] do            begin              Value[xlRangeValueDefault]:= DBGrid1.Columns.Items[i].Title.Caption;              Font.Name:='times new roman';              Font.Size:=10;              Font.Bold:=True;             With Interior do             begin                  ColorIndex := 15;                  Pattern := xlSolid;                  PatternColorIndex := xlAutomatic;             End;             With Borders do             begin                  LineStyle := xlContinuous;                  Weight := xlThin;                  ColorIndex := xlAutomatic;             End;            end;          end;          j:=2;          Query1.First;          While not Query1.Eof do          begin             For i:= 1 To  DBGrid1.Columns.Count Do             begin                s := A[i]+inttostr(j);               if DBGrid1.Fields[i-1].DataType  = ftCurrency then                begin                   Feuil.Range[s,s].NumberFormat  := '#,##0.00';                   Feuil.Range[s,s].Value[xlRangeValueDefault] := DBGrid1.Fields[i-1].AsCurrency;                end                else                    if DBGrid1.Fields[i-1].DataType  in [ftDate,ftDateTime] then                    begin                       Feuil.Range[s,s].NumberFormat  := 'dd/mm/yyyy';                       Feuil.Range[s,s].Value[xlRangeValueDefault] := DBGrid1.Fields[i-1].AsDateTime;                    end                    else                      begin                         Feuil.Range[s,s].NumberFormat  := 'Text';                         Feuil.Range[s,s].Value[xlRangeValueDefault] := '''' + DBGrid1.Fields[i-1].AsString;                      end ;             end;             Query1.Next;             j:=j+1;          end;   finally        SUIMsgDlg(' Exportation des données Terminée . ','MyApp',mtInformation,[mbOK],suiMessageDialog1.UIStyle);        ExcelApplication1.Visible[0]:=true;        ExcelApplication1.Cells.Select;        ExcelApplication1.Columns.AutoFit;        ExcelApplication1.Range['A1','A1'].Select;        ExcelApplication1.Disconnect;   end;
end.
لو ترفق صورة للخطأ يكون أفضل
الصفحات : 1 2