Delphi Excel veri aktarım.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mydestek
Üye
Mesajlar: 14
Kayıt: 10 Tem 2008 03:56

Delphi Excel veri aktarım.

Mesaj gönderen mydestek »

Örnek ;

Table1 de 10 kayıt var. Excel aktarırken tek Excel dosyasına 10 ayrı sayfa eklesin.
Yani her satırı ayrı ayrı sayfalar oluşturarak yazsın.

Kod Detay ;

qBsBs tablosundaki veriler için her bir satır için excel bir sayfa eklemek istiyorum.

sayfa:=v.workbooks[1].worksheets[1];

Kısmını nasıl düzenleye bilirim.

Fikri ve desteği olanlara çok minnettar kalacam.

------

procedure TForm1.Button2Click(Sender: TObject);

VAR
Toplam : real;
v,sayfa:variant;
say,i:integer;

begin
v:=CreateOleObject('excel.application');
say:=qBsBs.recordcount;
v.workbooks.add;
for i:=4 to say do
begin
qBsBs.first;
sayfa:=v.workbooks[1].worksheets[1];
sayfa.cells[3,4]:=qBsBsCariHesapnvan.Text;
qBsBs.Next;
end;
v.visible:=true;
end;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Delphi Excel veri aktarım.

Mesaj gönderen conari »

sayfa:=v.workbooks[1].worksheets[i-3];
yeterli.
yalnız excel 10 sayfalı açılmalı, açılmaz ise ayrıca sayfada eklemen lazım
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
mydestek
Üye
Mesajlar: 14
Kayıt: 10 Tem 2008 03:56

Re: Delphi Excel veri aktarım.

Mesaj gönderen mydestek »

Öncelikle TŞK.

Tüm sayfalara ilk kaydı aktarıyor.

Benim istediğim ;
1.Sayfaya 1. kayıt , 2.Sayfaya 2. kayıt
mydestek
Üye
Mesajlar: 14
Kayıt: 10 Tem 2008 03:56

Re: Delphi Excel veri aktarım.

Mesaj gönderen mydestek »

Ok. istediğim gibi yaptım Sağol.
Excel ilk açarken Kayıt sayısı kadar sayfa nasıl açtırırız.

procedure TForm1.Button3Click(Sender: TObject);

VAR
Toplam : real;
v,sayfa:variant;
say,i:integer;

begin
v:=CreateOleObject('excel.application');
say:=qBsBs.recordcount;
v.workbooks.add;
qBsBs.first;
for i:=4 to say do
begin

sayfa:=v.workbooks[1].worksheets[i-3];


sayfa.cells[3,4]:=qBsBsCariHesapnvan.Text;
qBsBs.Next;
end;
v.visible:=true;
end;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Delphi Excel veri aktarım.

Mesaj gönderen conari »

her döngünün başına eklemelisiniz.

sayfa:=v.workbooks[1].worksheets.add;
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
mydestek
Üye
Mesajlar: 14
Kayıt: 10 Tem 2008 03:56

Re: Delphi Excel veri aktarım.

Mesaj gönderen mydestek »

'C:\Sablon.xls' bir yol tanımlayıp katarımların bu sayfaya olması için bu kodu nasıl değiştirmeliyim.

VAR
Toplam : real;
v,sayfa:variant;
say,i:integer;
begin
v:=CreateOleObject('excel.application');
say:=qBsBs.recordcount;
v.workbooks.add;
qBsBs.first;
for i:=4 to say do
begin
sayfa:=v.workbooks[1].worksheets[i-3];
sayfa.cells[3,4]:=qBsBsCariHesapnvan.Text;
qBsBs.Next;
end;
v.visible:=true;
end;

Şimdiden Allah Razı olsun.Sağol.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Delphi Excel veri aktarım.

Mesaj gönderen conari »

Sitede excel ile ilgili bir çok örnek var arasınız daha hızlı cevap alırsınız.

Kod: Tümünü seç

v.Workbooks.Open('C:\Sablon.xls');
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
mydestek
Üye
Mesajlar: 14
Kayıt: 10 Tem 2008 03:56

Re: Delphi Excel veri aktarım.

Mesaj gönderen mydestek »

Tşk. Allah razı olsun.
mydestek
Üye
Mesajlar: 14
Kayıt: 10 Tem 2008 03:56

Re: Delphi Excel veri aktarım.

Mesaj gönderen mydestek »

bu konuda son soru.

"sayfa.cells[3,1]:=Image1. ..."
Gibi Image1 içindeki resmi Excel istenilen alana aktarıla bilir mi ?

Sitede aradım bu şekilde uygulama bulamadım.

Yardımınız ile yazdığım kodun son hali;

procedure TForm1.Button3Click(Sender: TObject);
VAR
Toplam : real;
v,sayfa:variant;
say,i:integer;
begin
v:=CreateOleObject('excel.application');
v.Workbooks.Open('C:\Sablon.xls');
say:=qBsBs.recordcount;
v.workbooks.add;
qBsBs.first;
for i:=4 to say do
begin
sayfa:=v.workbooks[1].worksheets.add;
sayfa.Name:= qBsBsCariKod.Text;
sayfa.cells[3,4]:=qBsBsCariHesapnvan.Text;
qBsBs.Next;
end;
v.visible:=true;
end;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Delphi Excel veri aktarım.

Mesaj gönderen conari »

Tam emin değilim.

Kod: Tümünü seç

v.workbooks.Pictures.Insert('c:\resim.jpg')
veya

Kod: Tümünü seç

v.workbooks.ActiveSheet.Pictures.Insert('c:\resim.jpg');
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Delphi Excel veri aktarım.

Mesaj gönderen conari »

sayfa kopyalamak için.

Kod: Tümünü seç

Bfrtmp: Variant;

Kod: Tümünü seç

v.Workbooks.Open('c:\sablon.xls');
Bfrtmp := v.WorkSheets[v.sheets.count];
v.worksheets[1].Copy(,Bfrtmp) ; //1 numarı sayfayı sona kopyala
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
mydestek
Üye
Mesajlar: 14
Kayıt: 10 Tem 2008 03:56

Re: Delphi Excel veri aktarım.

Mesaj gönderen mydestek »

Öncelikle çok teşekkür.
Evet Sablon.xls copyalıyor. Fakat Sablon copyası, veri yazdığım sayfa ayrı ayrı oluşuyor.
Bir türlü Copyaladığım sayfaya ile veri yazdığım sayfayı birleştiremedim.

Yapmak istediğim Copya ile oluşan sayfaya veri tabanından bilgi yazarak bir döngü kurmak istiyorum.

Sana zahmet aşağıdaki kodu incelermisin nerde hata yaptım acaba.

v:=CreateOleObject('excel.application');
say:=qBsBs.recordcount;
//v.workbooks.add;
v.Workbooks.Open(GetCurrentDir+'\Sablon.xls');
Bfrtmp := v.WorkSheets[v.sheets.count];
v.worksheets[1].Copy(,Bfrtmp);
qBsBs.first;

for i:=4 to say do
begin

sayfa:=v.worksheets[1].Copy(,Bfrtmp);
//sayfa:=v.workbooks[1].worksheets.Copy(,Bfrtmp);
//sayfa:=v.workbooks[1].worksheets.add;
sayfa.Name:= qBsBsCariKod.Text;
sayfa.cells[3,4]:=qBsBsCariHesapnvan.Text;
sayfa.cells[4,4]:=qBsBsKDVHariTutar.Text;
qBsBs.Next;

end;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Delphi Excel veri aktarım.

Mesaj gönderen conari »

Kod: Tümünü seç

for i:=4 to say do
begin
Bfrtmp := v.WorkSheets[v.sheets.count];
v.worksheets[1].Copy(,Bfrtmp);// şablon sayfanın numarısı 1 olmalı
sayfa:= v.worksheets[i];//şablon sayfa değişkenine atanıyor
sayfa.Name:= qBsBsCariKod.Text;// sayfa ismi
sayfa.cells[3,4]:=qBsBsCariHesapnvan.Text; //3.satır 4.sütun
sayfa.cells[4,4]:=qBsBsKDVHariTutar.Text; //4.satır 4.sütun
qBsBs.Next; //sonraki veri
end;
v.visible:=true;
Programdan çıkarken değişkenleri bellekten kaldırmayı unutma..
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
mydestek
Üye
Mesajlar: 14
Kayıt: 10 Tem 2008 03:56

Re: Delphi Excel veri aktarım.

Mesaj gönderen mydestek »

sayfa:= v.worksheets;

kısmında hata veriyo. Bende aynı hataya takılmıştım.

"Geçersiz dizin" diyor
diyor ve excel aktarmıyor.

Bu yüzden acaba sıralamada hata mı var demiştim
Cevapla