excele gridden istenilen sütunların aktarılması

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

excele gridden istenilen sütunların aktarılması

Mesaj gönderen huseyinert »

Merhaba,

dbgride listelediğim 23 tane alan var bunların hepsini excele aktarabiliyorum fakat benim bu 23 alandan seçtiklerimi aktarmam gerekiyor bunun nasıl yapılacağını bir türlü çözemedim yardımcı olabilir misiniz arkadaşlar.

teşekkürler..
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: excele gridden istenilen sütunların aktarılması

Mesaj gönderen Kuri_YJ »

Selamlar,

Burada biraz size iş düşüyor. Arkada gizli bir grid yapabilirsiniz. Bu grid'in Querysi, filtresi, datasource'u filan hepsi diğer (görünen) griddeki gibi olsun. Görünen gridde header tıklandığında, gidip gizli olan gride bu header için kolon oluşturun. Her tıklamada yeni kolonu ekleyin. Daha sonra yeni oluşturduğunuz Gizli gridi export edin.

Çok verimli bir metot değil ama işinizi görür kanaatindeyim.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Re: excele gridden istenilen sütunların aktarılması

Mesaj gönderen huseyinert »

Selamlar Hocam,
görünen griddeki sütün başlığına tıklanınca gizli gride atacak ama excele gönderirken her defasında hangi başlık olduğu nasıl aktaracağız normalde excele aktarma kodu aşağıdaki gibi yapıyorum burada her hücre için başlıkta vermek lazım ....

Kod: Tümünü seç

var
excel, sayfa: Variant ;
d:integer;
r:variant;
begin
Screen.Cursor := crHourGlass;

excel:=createoleobject('excel.application');
excel.workbooks.add;
sayfa:=excel.workbooks[1].worksheets[1];
r:=excel.activeworkbook.worksheets[1].cells[1];
d:=0;
r.cells[1,1]:='TC KİMLİK';
r.cells[1,2]:='ADI SOYADI';
r.cells[1,3]:='UNVANI';
r.cells[1,4]:='SINIFI';
r.cells[1,5]:='BİRİMİ';
r.cells[1,6]:='DOĞUM TARİHİ';
r.cells[1,7]:='CİNSİYET';
r.cells[1,8]:='MEDENİ HAL';
r.cells[1,9]:='ÇOCUK SAYISI';
r.cells[1,10]:='KAN GRUBU';
r.cells[1,11]:='İŞE BAŞ.TAR.';
r.cells[1,12]:='EĞİTİM DURUMU';
r.cells[1,13]:='EMEKLİ/SGK NO';
r.cells[1,14]:='KIDEM YILI';
r.cells[1,15]:='HESAP NO';
r.cells[1,16]:='KURUMU NO';
r.cells[1,17]:='MEZUN OLD. ÜNİVERSİTE';
r.cells[1,18]:='MEZUN OLD. BÖLÜM';
r.cells[1,19]:='E-MAIL';
r.cells[1,20]:='EV TEL';
r.cells[1,21]:='CEP TEL';
r.cells[1,22]:='ADRES';
r.cells[1,23]:='YÖNETİCİLİĞE BAŞ. TARİHİ';

personel_rapor.first;


while Not personel_rapor.eof Do
begin

d:=d+1;

r.cells[1+d,1]:=personel_rapor.FieldByName('KIMLIK_NO').AsString;
r.cells[1+d,2]:=personel_rapor.FieldByName('ad_soyad').AsString;
r.cells[1+d,3]:=personel_rapor.FieldByName('unvan').AsString;
r.cells[1+d,4]:=personel_rapor.FieldByName('sinifi').AsString;
r.cells[1+d,5]:=personel_rapor.FieldByName('birimi').AsString;

r.cells[1+d,6]:=personel_rapor.FieldByName('DOGUM_TAR').AsString;
r.cells[1+d,7]:=personel_rapor.FieldByName('CINSIYET').AsString;
r.cells[1+d,8]:=personel_rapor.FieldByName('MEDENI_HAL').AsString;
r.cells[1+d,9]:=personel_rapor.FieldByName('COCUK_SAYI').AsString;
r.cells[1+d,10]:=personel_rapor.FieldByName('KAN_GRUBU').AsString;

r.cells[1+d,11]:=personel_rapor.FieldByName('ISE_BAS_TARIHI').AsString;
r.cells[1+d,12]:=personel_rapor.FieldByName('EGITIM_DURUMU').AsString;
r.cells[1+d,13]:=personel_rapor.FieldByName('SGK_NO').AsString;
r.cells[1+d,14]:=personel_rapor.FieldByName('KIDEM_YILI').AsString;
r.cells[1+d,15]:=personel_rapor.FieldByName('HESAP_NO').AsString;

r.cells[1+d,16]:=personel_rapor.FieldByName('KURUM_NO').AsString;
r.cells[1+d,17]:=personel_rapor.FieldByName('MEZ_UNIVERSITE').AsString;
r.cells[1+d,18]:=personel_rapor.FieldByName('MEZ_BOLUM').AsString;
r.cells[1+d,19]:=personel_rapor.FieldByName('EMAIL').AsString;
r.cells[1+d,20]:=personel_rapor.FieldByName('EV_TEL').AsString;

r.cells[1+d,21]:=personel_rapor.FieldByName('CEP_TEL').AsString;
r.cells[1+d,22]:=personel_rapor.FieldByName('ADRES').AsString;
r.cells[1+d,23]:=personel_rapor.FieldByName('YONETICI_TARIH').AsString;


personel_rapor.next;

end;
 {
d:=d+2;

r.cells[1+d,9]:='BORÇ TOPLAM';
r.cells[2+d,9]:=label3.Caption;

r.cells[1+d,10]:='ALACAK TOPLAM';
r.cells[2+d,10]:=label14.Caption;

r.cells[1+d,11]:='BAKİYE';
r.cells[2+d,11]:=LABEL16.Caption;
   }
excel.Columns.AutoFit; // burası colonlari ayarlar
Screen.Cursor := crDefault;
excel.visible:=true;
excel:=unassigned;
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: excele gridden istenilen sütunların aktarılması

Mesaj gönderen xozcanx »

Merhaba;
Bu iş için ListBox Ekleyebilirsin. Seçili Grid Header ListBox'a eklenir. hangileri seçildi burada görebilirsin/gösterebilirsin. Hatta seçili header Listbox içinde var ise tekrar ekleme yaptırmazsın.

Başlıkları yazdırmak için öncelikle Griddeki eklediğin kolon sayısını tespit edip Örnek 3 tane TC,ADI,SOYADI döngü ile ekleme yaparsın

Kod: Tümünü seç

r.cells[1,i]:=DBGrid1.Colums[i].Title.Caption;
aynı işlemi bu defa Satırlar için yapacaksın..
Grid üzerindeki verileri Export edeceksen ve buradaki veriler üzerinde işlem yapacaksan Gridin EnableContorl ve DisableControl özelliklerinide kullanmayı ihmal etmeki hızlı sonuçlar alabilesin.

Kod: Tümünü seç

//İşlem Başlamadan önce
DBGrid1.DataSource.DataSet.DisableControls;
...
//İşlem Bittikten Sonra
DBGrid1.DataSource.DataSet.EnableControls;
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Cevapla