Tabloyu Word Ve Excel'e Gönderme

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Tabloyu Word Ve Excel'e Gönderme

Mesaj gönderen conari »

Ana formun close eventine bunu yazmanız gerektiği söyleniyor.

Kod: Tümünü seç

if OpExcel1.Connected=true then //Excel 'e Bağlıysa 
OpExcel1.Connected:=false; //Bağlantıyı Kes
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
mustafaucuz
Üye
Mesajlar: 5
Kayıt: 25 Eki 2017 07:08

Re: Tabloyu Word Ve Excel'e Gönderme

Mesaj gönderen mustafaucuz »

Fatih! yazdı: 11 May 2005 02:18 Öncelikle http://sourceforge.net/projects/tpofficepartner/ adresinden Office Partner Componentini indirip Kurun.Kullanımı Ücretsiz Bir Component. Kurduuktan Sonra Component Palette OfficePartner sekmesiyle yerini alacaktır. Bu bileşenleri kullanartak kolaylıkla Word ve Excel'e veri aktarabiliriz.



Tabloyu Word'e Gönderme
Bildiğiniz Şekilde Veritabanı Bağlantınızı Yapın. Component Palette OfficePartner sekmesinde bir Opword birde OpDataSetModel Bileşeni Varsayılan adlarıyla bırakıyorum.

Tablomu Worde aktaracak bileşenimin adı ibquery1. sizinki table1,query1,adoquery1 vb. olabilir.

Opword ve OpdatasetModel bileşenlerinin özellikleriyle oynamanıza gerek yok Herşeyi Kodla Halledeceğiz. Öncelikle Aşağıdaki Değişkeni Tanımlayın.

Kod: Tümünü seç

var
Form1: TForm1;
MergeDoc: TOpWordDocument; //Değişkenimiz. 


Daha Sonra Uygulamamız Kapatıldığında Wordle Bağlantımızı Kesildiğini Garantilemek için Formun OnClose Olayına Aşağıdaki Kodu Yazın


Kod: Tümünü seç

if Assigned(MergeDoc) then //Word Daha Önce Açılmışsa
MergeDoc.Free; //Word'ü Kapat
if OpWord1.Connected=true then //Word'e Bağlıysa 
OpWord1.Connected:=false; //Bağlantıyı Kes
 


Aşağıdaki Kodda Verileri Word'e gödermemizi sağlıyor. Ben Buttonun OnClick Olayına Yazdım.


Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
//Worde Aktaracağımız Tabloyu OpDataSetModel Bileşeninin
//Dataset özelliğine Aktarıyoruz
OpDataSetModel1.Dataset:=IBQuery1;
if Assigned(MergeDoc) then //Word Daha Önce Açılmışsa
MergeDoc.Free; //Word'ü Kapat
if OpWord1.Connected=true then //Word'e Bağlıysa 
OpWord1.Connected:=false; //Bağlantıyı Kes
ibquery1.Active:=true; //Tabloyu Aç
OpWord1.Connected := True; //Word'e Bağlan
OpWord1.DisplayScrollBars:=true; //Word'de Kaydırma Çubukları Görünsün
OpWord1.Visible := False; //Word'ü Gizle
MergeDoc := OpWord1.NewDocument; //Yeni Word Belgesi Aç
OpWord1.Visible := True; //Word'ü Göster
Opword1.WindowState:=wdwsMaximized; //Word'ü Tam Ekran Olarak Göster
//Tabloyu Word'e Aktar
with OpWord1.Documents[0].Tables.Add do
begin
OfficeModel :=OpDatasetModel1;
PopulateDocTable;
end;
ibquery1.Active:=false; //Tabloyu Aç
end;
arkadaşlar ne yaptım ise bu kodu çalıştıramadım. nerede yanlış yapıyorum (opword)?. hatalı parametre diye hata veriyor.acil yardım ltfn


Tabloyu Excel'e Gönderme
Bildiğiniz Şekilde Veritabanı Bağlantınızı Yapın. Component Palette OfficePartner sekmesinde bir OpExcel birde OpDataSetModel Bileşeni Varsayılan adlarıyla bırakıyorum.

Tablomu Excel'e aktaracak bileşenimin adı ibquery1. sizinki table1,query1,adoquery1 vb. olabilir.

OpExcel ve OpdatasetModel bileşenlerinin özellikleriyle oynamanıza gerek yok Herşeyi Kodla Halledeceğiz. Öncelikle Aşağıdaki Değişkeni Tanımlayın.


Kod: Tümünü seç

var
Form1: TForm1;
NewBook:TopExcelWorkBook;


Aşağıdaki Kodu OpExcel Bileşeninin BeforeWorkBookClose Olayınada yazın.


Kod: Tümünü seç


if Assigned(NewBook:) then //Excel Daha Önce Açılmışsa
NewBook:.Free; ///Excel'i Kapat
if OpExcel1.Connected=true then //Excel 'e Bağlıysa 
OpExcel1.Connected:=false; //Bağlantıyı Kes
 


Daha Sonra Uygulamamız Kapatıldığında Excelle Bağlantımızı Kesildiğini Garantilemek için Formun OnClose Olayına Aşağıdaki Kodu Yazın.

Kod: Tümünü seç

if OpExcel1.Connected=true then //Excel 'e Bağlıysa 
OpExcel1.Connected:=false; //Bağlantıyı Kes
 




Aşağıdaki Kodda Verileri Excel 'e gödermemizi sağlıyor. Ben Buttonun OnClick Olayına Yazdım.

Kod: Tümünü seç


procedure TForm1.Button1Click(Sender: TObject);
var
Rng : TOpExcelRange;
begin
OpExcel1.Connected := True; //Excel'e Bağlan
OpExcel1.Visible := True; //Excel'i Göster
OpExcel1.WindowState:=xlwsMaximized; //Excel'i Tam Ekran Olarak Göster
IBQuery1.Active:=true; //Tabloyu Aç
NewBook:=OpExcel1.Workbooks.Add; //Yeni Excel Belgesi Aç ü
//Ayarları Yap
Rng := OpExcel1.Workbooks[0].Worksheets[0].Ranges.Add;
Rng.Name := 'www.delphidunyasi.com'; //Keyfinize Göre Bir isim Verin
Rng.Address := 'A1';
Rng.OfficeModel :=OpDataSetModel1; //Kaynak OpDataSetModel Bileşeni
//Excele Aktaracağımız Tabloyu OpDataSetModel Bileşeninin
//Dataset özelliğine Aktarıyoruz
OpDataSetModel1.Dataset :=IBQuery1;
OpExcel1.RangeByName['www.delphidunyasi.com'].Populate; //Tabloyu Aktar
OpExcel1.Workbooks[0].Worksheets[0].Activate; //Exceli Aktif Pencere yap
Rng.AsRange.Columns.AutoFit; //Kolon Genişlikleri Otomatik
IBQuery1.Active:=false; //Tabloyu Kapat
end;


Not : Alan Adlarını Field Editorden DisplayFormat Özelliği ile istediğiniz gibi değiştirebilirsiniz. örneğin alan adı DOGUM_TARIHI ise alanın DisPlayFormat özelliğine Doğum Tarihi Yazarsanız alan adı DisPlayFormat özelliğinde olduğu gibi görünür
Cevapla