DBGrid1 den Excel gönderme !!!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

DBGrid1 den Excel gönderme !!!

Mesaj gönderen ozcank »

Arkadaşlar ben DBGrid1 den excelle gönderebiliyorum ama birtürlü satır ayarını yapamadım yardımcı olurmusunuz?
for i:=1 to say do
excell de satırı 4. satırdan başlatmak istiyorum ama başaramadım bir türlü.

Kod: Tümünü seç

var
  v,sayfa:variant;{v excel prg, sayfa calisma sayfasi}
  say,i:integer;
begin
  ADOQuery1.open;
  say:=ADOQuery1.recordcount;//query kayit sayisi
  v:=createoleobject('excel.application');//exceli oluştur.
  v.workbooks.add;//yeni calisma kitabini ekle
  sayfa:=v.workbooks[1].worksheets[1];{Birinci calisma sayfasini sayfa degiskenine ata}
  ADOQuery1.first;
Sayfa.Range['A1','C3'].Font.Bold:=True;
Sayfa.Range['A1','C3'].Font.Color:=clRed;
Sayfa.Cells[1,1].Value:='Müşteri';
Sayfa.Cells[1,2].Value:='Cari Kod';
Sayfa.Cells[1,3].Value:='Cari İsim';
Sayfa.Range['A3','I3'].Font.Bold:=True;
Sayfa.Range['A3','I3'].Font.Color:=clRed;

Sayfa.Cells[1,2].Value:='''' + Edit1.Text;
Sayfa.Cells[1,3].Value:='''' + Edit2.Text;

 sayfa.cells[3,1]:=DBGrid1.Columns[0].Title.Caption;
 sayfa.cells[3,2]:=DBGrid1.Columns[1].Title.Caption;
 sayfa.cells[3,3]:=DBGrid1.Columns[2].Title.Caption;
 sayfa.cells[3,4]:=DBGrid1.Columns[3].Title.Caption;
 sayfa.cells[3,5]:=DBGrid1.Columns[4].Title.Caption;

    for i:=1 to say do
    begin
    sayfa.cells[i,1,2]:=DBGrid1.Columns.Grid.Fields[0].Text;
    sayfa.cells[i,2,2]:=DBGrid1.Columns.Grid.Fields[1].Text;
    sayfa.cells[i,3,2]:=DBGrid1.Columns.Grid.Fields[2].Text;
    sayfa.cells[i,4,2]:=DBGrid1.Columns.Grid.Fields[3].Text;
    sayfa.cells[i,5,2]:=DBGrid1.Columns.Grid.Fields[4].Text;
    ADOQuery1.next;
    end;
v.visible:=true;//Exceli acip verileri goster
end;

Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: DBGrid1 den Excel gönderme !!!

Mesaj gönderen m_ekici »

merhaba

http://www.scip.be/index.php?Page=ComponentsExcelExport

burada free excel componenti var. Ben bunu kullanıyorum.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: DBGrid1 den Excel gönderme !!!

Mesaj gönderen brs »

Bende henüz tamalamadığım bir projeyi paylaşıyorum umarım işini görür kendine göre düzenlemeleri yaparsım artık...

procedure TForm9.SpeedButton34Click(Sender: TObject);
var // --->> uses "ComObj" ekle
V, Sayfa: Variant; { v excel prg, sayfa calisma sayfasi }
Say, i: integer;
begin
If Table1.Active = False Then Table1.Open;
Say := Table1.Recordcount; // query kayit sayisi
V := CreateoleObject('excel.application'); // exceli oluştur.
V.Workbooks.Add; // yeni calisma kitabini ekle
Sayfa := V.Workbooks[1].Worksheets[1];
{ Birinci calisma sayfasini sayfa degiskenine ata }
i := 1;
Sayfa.Cells[i, 1] := 'START';
Sayfa.Cells[i, 2] := 'PROGRAMADI';
Sayfa.Cells[i, 3] := 'IN';
Sayfa.Cells[i, 4].Value := 'IDNO';
Table1.First;
for i := 2 to Say + 1 do
begin

Sayfa.Cells[i, 1].Font.Color := ClRed; // Renk
Sayfa.Cells[i, 1].Font.Bold := True; // Yazı Kalınlığı
Sayfa.Cells[i, 1].ColumnWidth := 50; // Genişlik
Sayfa.Cells[i, 1].Borders.Color := ClRed; // Hüçrenin dört kenar rergi
Sayfa.Cells[i, 7].Value := FormatDateTime('d mmmm yyyy dddd hh:nn:ss',
Now); // Tarih
Sayfa.Cells[i, 1].HorizontalAlignment := -4152; // Sağa yasla
Sayfa.Cells[i, 3].HorizontalAlignment := -4131; // Sola yasla
Sayfa.Cells[i, 2].EntireColumn.AutoFit; // Otomatik sütun genişliği
Sayfa.Cells.Range['A1', 'C10'].Rows.AutoFit; // Otomatik sütun yüksekliği
Sayfa.Cells[1, 9].RowHeight := 1 / 0.035; // Satır yüksekliği
Sayfa.Cells[i, 5] := 'DENEME METİN'; // İsim

Sayfa.Cells[i, 1] := Table1.FieldByName('START').AsString;
Sayfa.Cells[i, 2] := Table1.FieldByName('PROGRAMADI').AsString;
Sayfa.Cells[i, 3].Value := Table1.FieldByName('IN').AsString;
Table1.Next;
end;
V.Visible := True; // Exceli acip verileri goster
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
arkantos_55
Üye
Mesajlar: 25
Kayıt: 26 Nis 2011 03:18

Re: DBGrid1 den Excel gönderme !!!

Mesaj gönderen arkantos_55 »

Buşekilde yaparsanız işinizi görecektir diye düşünüyorum
for i:=1 to say do
begin
sayfa.cells[0,i+3]:=DBGrid1.Columns.Grid.Fields[0].Text;
sayfa.cells[1,i+3]:=DBGrid1.Columns.Grid.Fields[1].Text;
sayfa.cells[2,i+3]:=DBGrid1.Columns.Grid.Fields[2].Text;
sayfa.cells[3,i+3]:=DBGrid1.Columns.Grid.Fields[3].Text;
sayfa.cells[4,i+3]:=DBGrid1.Columns.Grid.Fields[4].Text;
ADOQuery1.next;
end;


kendi kullandığım şekil ise ;

procedure Tfrm1.EXCELEAKTARClick(Sender: TObject);
var
v,sayfa:Variant;{v excel prg, sayfa calisma sayfasi}
say,j:Integer;
begin
try
ZQueryKabinSuspansiyon.Open;
say:=ZQueryKabinSuspansiyon.RecordCount;//query kayit sayisi
v:=CreateOleObject('Excel.Application');//exceli oluştur.
v.workbooks.add;//yeni calisma kitabini ekle
sayfa := v.workbooks[1].worksheets[1];{Birinci calisma sayfasini sayfa degiskenine ata}
ZQueryKabinSuspansiyon.First;
for j:=0 to 10 do
sayfa.cells[1,j+1]:=DBGridKabinSuspansiyon.Columns[j].Title.Caption;

for i:=1 to say do
begin
for j:=0 to 10 do
sayfa.cells[i+1,j+1]:=DBGridKabinSuspansiyon.Columns.Grid.Fields[j].Text;
ZQueryKabinSuspansiyon.Next;
end; {for}
v.Range['A1:K1'].Font.Bold := True;
sayfa.Columns.Columns[1].ColumnWidth := 11;
sayfa.Columns.Columns[2].ColumnWidth := 20;
sayfa.Columns.Columns[3].ColumnWidth := 11;
sayfa.Columns.Columns[4].ColumnWidth := 60;
sayfa.Columns.Columns[5].ColumnWidth := 5;
sayfa.Columns.Columns[6].ColumnWidth := 5;
sayfa.Columns.Columns[7].ColumnWidth := 10;
sayfa.Columns.Columns[8].ColumnWidth := 10;
sayfa.Columns.Columns[9].ColumnWidth := 10;
sayfa.Columns.Columns[10].ColumnWidth := 10;
sayfa.Columns.Columns[11].ColumnWidth := 10;

v.ActiveWorkbook.Saved:=TRUE;
OpenDialogKabinSuspansiyon.Execute;
v.ActiveWorkbook.SaveCopyAs(OpenDialogKabinSuspansiyon.FileName + '.xls');
if not VarIsEmpty(v) then
begin
v.DisplayAlerts := False;
v.Quit;
v:=unassigned;
end; {if}
except
end; {try-except}
end; {procedure}
Cevapla