Bu şekilde yaptım çalışmadı
Sheet.Cells[Row, 6].Formula := DBGrid1.Fields + InttoStr(Row - 1);
DBGrid den Excell e veri gönderme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: DBGrid den Excell e veri gönderme
Bu şekilde tarihi yazdırabildim ama bir satırı ve dip kısımda yazdı ;
Kod: Tümünü seç
for i := 0 to DBGrid1.FieldCount - 1 do
if i <> 2 then
begin
Inc(Col);
Sheet.Cells[Row, Col].Value := DBGrid1.Fields[i].Value;
if Col > 2 then
Sheet.Cells[Row, Col].NumberFormat := '0_ ;-0';
end;
Next;
Inc(Row);
end;
Sheet.cells[Row,6]:= DBGrid1.Fields[6].Asstring; // Bu satır
end;
finally
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: DBGrid den Excell e veri gönderme
Özcan bey, bu yaptıklarımızın hiç birinin Delphi ile alakası olmadığını belirteyim. Mevzu, sadece Excel'de hücre formatı sorunudur.
Döngü içindeki if şartını şöyle yazın.
Yani
if Col > 2 then
Sheet.Cells[Row, Col].NumberFormat := '0_ ;-0';
satırının yerine yazacaksınız.
Döngü içindeki if şartını şöyle yazın.
Yani
if Col > 2 then
Sheet.Cells[Row, Col].NumberFormat := '0_ ;-0';
satırının yerine yazacaksınız.
Kod: Tümünü seç
...
if (i = 3) then // burası sayılar için. Başka sayı varsa " or (i = 5) " gibi ekleyebilirsiniz. Burada i Grid'in sütun nosunu temsil ediyor
Sheet.Cells[Row, Col].NumberFormat := '0_ ;-0'; // sen bu şekilde yazmışsın bunun yerine '#,###.##' formatı kullanabilirsin (sorun olursa nokta virgül yerini değiştir)
if (i = 6) then //tarih olan sütunlar için
Sheet.Cells[Row, Col].NumberFormat := 'dd.mm.yyy'; // olmazsa 'gg.aa.yyy' yaz
...
Re: DBGrid den Excell e veri gönderme
Çok teşekkür ederim kodu şu şekilde değiştirdim istediğim gibi oldu ;
Kod: Tümünü seç
begin
Row := 9; // başlangıç 9. satır
First;
While not Eof do
begin
Col := 0;
for i := 0 to DBGrid1.FieldCount - 1 do
if i <> 2 then
begin
Inc(Col);
Sheet.Cells[Row, Col].Value := DBGrid1.Fields[i].Value;
if Col >= 2 then
Sheet.Cells[Row,Col].NumberFormat := '0_ ;-0';
if (Col = 6) or (Col = 6) then
Sheet.Cells[Row, Col].NumberFormat := 'gg.aa.yyyy';
end;
Next;
Inc(Row);
end;
end;
finally
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: DBGrid den Excell e veri gönderme
Özcan bey yine ezbere ve yanlış yolda ilerliyorsunuz.
if Col >= 2 then
Sheet.Cells[Row,Col].NumberFormat := '0_ ;-0';
if (Col = 6) or (Col = 6) then // Allah aşkına bu nedemek ?
if Col >= 2 dediğinizde durum 6 içinde geçerli. 6 da 2 den büyüktür. Örn: 6 için önce formatı '0_ ;-0' yapıp sonra bir alt satıda tarihe çeviriyorsunuz.
Siz benim yaptığım gibi yapın inanın doğrusu o. Siz mantık yürütmeden yapıyorsunuz. Böyle programcı olunmaz.
if Col >= 2 then
Sheet.Cells[Row,Col].NumberFormat := '0_ ;-0';
if (Col = 6) or (Col = 6) then // Allah aşkına bu nedemek ?
if Col >= 2 dediğinizde durum 6 içinde geçerli. 6 da 2 den büyüktür. Örn: 6 için önce formatı '0_ ;-0' yapıp sonra bir alt satıda tarihe çeviriyorsunuz.
Siz benim yaptığım gibi yapın inanın doğrusu o. Siz mantık yürütmeden yapıyorsunuz. Böyle programcı olunmaz.
Re: DBGrid den Excell e veri gönderme
Bu şekilde düzelttim;
Kod: Tümünü seç
Row := 9; // başlangıç 9. satır
First;
While not Eof do
begin
Col := 0;
for i := 0 to DBGrid1.FieldCount - 1 do
if i <> 2 then
begin
Inc(Col);
Sheet.Cells[Row, Col].Value := DBGrid1.Fields[i].Value;
if Col >= 2 then
// Sheet.Cells[Row,Col].NumberFormat := '0_ ;-0';
Sheet.Cells[Row,Col].NumberFormat := '#';
if (Col = 6) then
Sheet.Cells[Row, Col].NumberFormat := 'gg.aa.yyyy';
end;
Next;
Inc(Row);
end;
end;
finally
Sheet.Columns['A:G'].EntireColumn.AutoFit;
ExcelApp.Visible := True;
ExcelApp := Null; WBook := Null; Sheet := Null;
end;
end;
end;