08-04-2016, 09:41 AM (آخر تعديل لهذه المشاركة: 08-04-2016, 09:56 AM بواسطة أبو معاذ.)
السلام عليكم ورحمة الله وبركاته ،
في الحقيقة هذا الموضوع طرحه أحد الإخوة القدامى أظنه مروان او الأخ MusK .
لكن مع الترقية الجديدة للمنتدى لم يعد بالإمكان مشاهدة الموضوع.
وحتى يبقى الأجر متواصل لصاحب الموضوع (وأسأل الله أن يجعل لي نصيبا من الأجر).
هذا الموضوع هو كيفية تصدير قواعد البيانات إلى ملف الإكسل. و هو برنامج رائع لا يحتاج إلى مكونات إضافية.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك. تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
سلام عليكم
بارك الله فيك
لاكن يوجد مشكلة في التاريخ
مثال 12/02/2018 عندما اقوم بتصدير البيانات الي exel يحول التاريخ الى 02/12/2018
من فظلك اريد المساعدة في حل هاذا المشكل
شكرا
09-05-2018, 09:06 AM (آخر تعديل لهذه المشاركة: 09-05-2018, 09:11 AM بواسطة أبو معاذ.)
السلام عليكم ورحمة الله وبركاته ،
كانت لدي نفس المشكلة في تصدير التواريخ ،
وحلها هو كالتالي :
لابد من معرفة نوع الحقل قبل تصديره ،
فمثلا :
هذا الكود استعمله في تصدير 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 .
لكن مع الترقية الجديدة للمنتدى لم يعد بالإمكان مشاهدة الموضوع.
السلام عليكم
اشكرك اخي أبو معاذ علي الرد لاكن اخي هذا الكود
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
اين اظعه
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;