Mega Code Archive

 
Categories / Delphi / Activex OLE
 

Dbgrid to excel form [dbgridden excel formuna kolay kayıt]

// ****** DBGrid den EXCEL'de Hazırladığınız Forma Kolayca kayıt. ****** // Şimdi excelde boş bir tablo hazırladığımızı düşünelim. Bu boş tabloda sabit olan bilgiler (Başlık, yazı açıklama) bulunsun. Ayrıca tablomuzdaki hücreler biçimlendirilmiş( font, kenarlık,renk,veri cinsi) olsun. //Amacımız, boş olan bu tabloyu, DBGrid içindeki bilgilerle doldurmak, sonrada farklı bir isimle kaydetmek. İşte aşağıdaki procedure bu işi yapıyor. // (Öncelikle verileri olmayan bir excel tablosu hazırlamış ve diskimize kaydetmiş olmamız lazım. Diyelimki bu tablo "C:\Rapor01.xls" dosyası olsun.) // // Aşağıdaki procedure 4 adet parametre almaktadır. // Birinci Parametre Excel formatında kaydedilecek olan DBGrid in adıdır. // İkinci Parametre boş olarak kaydettiğimiz Excel dosyasının adıdır. // Üçüncü Parametre Farklı kaydedeceğimiz dosya adıdır. // Dördüncü Parametre ise bilgilerin hangi hücreden başlanarak aktarılacağını gösteren point türünde bir bilgidir. // // ÖRNEK: // DBGridinizin adı "DBGrid1" olsun. // Bos ve biçimli tablo dosyamız "C:\Rapor01.xls" olsun. // Tablonun doldurulmuş halini "C:\Bilgiler.xls" olarak kaydetmek istiyelim. // Tablo içinde bilgileri 2.Sütün ve 5.Satır dan başlayarak aktaralım. // Bu durumda procdure in kullanımı kullanımı aşağıdaki gibi olacaktır. // // DBGridToExcelForm(DBGrid1, 'C:\Rapor01.xls', 'C:\Bilgiler.xls', Point(2,5)); // // Kolay Gelsin // Türker ÖZDEMİR (turkerozdemir@yahoo.com) // // Not : Uses Kısmında ComObj eklemeyi unutmayın !!!!!! procedure DBGridToExcelForm(DBG:TDBGrid; BosRapor:String; DoluRapor:String;IlkHucre:TPoint); var EXCEL, WORKBOOK, SHEET:VARIANT; k1,k2,k3:Integer; begin DBGDataset:=DBG.DataSource.DataSet; k3:=DBGDataset.RecNo; DBGDataset.DisableControls; EXCEL := CREATEOLEOBJECT('EXCEL.APPLICATION'); EXCEL.VISIBLE :=False; WORKBOOK :=EXCEL.WORKBOOKS.Open(BosRapor); SHEET:=WORKBOOK.WORKSHEETS[1]; Try DBGDataset.First; k2:=IlkHucre.Y-1; While not(DBGDataset.Eof) do begin k2:=k2+1; For k1:=0 to DBG.Columns.Count-1 do begin SHEET.CELLS[k2,k1+ IlkHucre.X+k1]:=DBG.Columns[k1].Field.AsString; end; DBGDataset.Next; end; WORKBOOK.SaveAs(DoluRapor); ShowMessage('Excell Formatında Kayıt Tamamlandı'); Finally EXCEL.DisplayAlerts := False; EXCEL.Quit; EXCEL:=Unassigned; DBGDataset.RecNo:=k3; DBGDataset.EnableControls; end; end; //NOT : "IlkHucre" değişkenini procedure tanımlarken "lkHucre" şeklinde yazmışım, yanlışlık için özür dilerim.