Exeldeki veriyi StringGrid'e aktarmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
lom
Üye
Mesajlar: 135
Kayıt: 25 Nis 2006 02:37

Exeldeki veriyi StringGrid'e aktarmak

Mesaj gönderen lom »

Merhabalar arkadaşlar. Forumda olduğundan eminim am aradım bulamadım. Exel bi dosyam var. 6000'e yakın satırı bulunan. bu verileri delphide stringgrid nesnesine aktrmam lazım. Yardımcı olursanız sevinirim. Kolay Gelsin..
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

her seferindemi yapacaksın yoksa bir defaya mahsusmu
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
lom
Üye
Mesajlar: 135
Kayıt: 25 Nis 2006 02:37

Mesaj gönderen lom »

ikutluay yazdı:her seferindemi yapacaksın yoksa bir defaya mahsusmu
bir defaya mahsus
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

o Zaman excelden DBF olarak export et. (işin çoğu burada bitti) delphi tarafındada bu dbf yi bir table a bağlar sırayla okur döngü ile yazarsın..

bir fornext ile stribg cellee degerleri yazarsın ok...

eğer stringgrid yerine dbf yi bir dbgirde bağlarsan tadından yenmez olur hemde yukardaki gibi kasmazsın
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
lom
Üye
Mesajlar: 135
Kayıt: 25 Nis 2006 02:37

Mesaj gönderen lom »

Teşekkür ederim ilginize. Forumda biraz daha arama yaparak sonuca ulaştım. Ancak bi sorunum var. Bulduğum bu kodda stringgridin satır ve sütun sayısı sabit. Yani for döngüsünde hangi sakamı yazarsan okadar satırı ve sütunu getiriyo. Peki Exelde kaç tane satır ve sütun varsa hepsini almak istiyorum. Yani daha dinamik olsun istiyorum.. Nasıl yapabiliriz bunu. Teşekürler..

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var 
    book:variant; 
    excel,sheet:variant; 
    satir, sutun:integer; 
    str:string; 
begin

    excel := createOleObject('Excel.application');
    OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls'; 
    if opendialog1.Execute then 
    begin 
        book:= Excel.WorkBooks.Open(OpenDialog1.FileName); 
        try 
            Screen.Cursor := crHourGlass;
            sheet := book.worksheets[1]; 
            for satir:=1 to 7000 do
            begin
                str := sheet.cells[satir, 1];
                if (str <> '') then
                begin 
                    Update;
                    stringgrid1.Row:=stringgrid1.Row+1;
for sutun:=1 to 50 do  [color=red]BURAYI MESELA EXELDEKİ Dolu Olan Sütun SAyısı Vermek[/color]
                        stringgrid1.Cells[sutun-1,stringgrid1.row] :=sheet.cells[satir, sutun]; 

                end; 
            end; 
            Excel.quit; 
            excel:=Unassigned; 
        finally 
            Screen.Cursor := crDefault; 
        end; 
    end;

end;
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

o döngüyü for next ten while do ya çevir. çok sorun olmaz.

örneği pseudo olarak yazdım

Kod: Tümünü seç

while 
 excel tablosu 1. kolonu dolu ise 
  do 
   begin  
      burda stringgirdi yap
   end;
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
lom
Üye
Mesajlar: 135
Kayıt: 25 Nis 2006 02:37

Mesaj gönderen lom »

ikutluay yazdı:o döngüyü for next ten while do ya çevir. çok sorun olmaz.

örneği pseudo olarak yazdım

Kod: Tümünü seç

while 
 excel tablosu 1. kolonu dolu ise 
  do 
   begin  
      burda stringgirdi yap
   end;
O sorunu ortadan kaldırdım. İf deyiminin sonun else break yazdım. Ancak exel tablosu kaç satır ve sütundan oluşuyo onu başaramadım.. Onu while döngüsünde bi sayaç yaparak yapmaya çalıştım ama olmadı nedense..
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

ole üzerinden bu iş çok yavaş olur. sen genede ilk önerimi düşün eğer bir defaya mahsus ise.

aslında gerekli ayaları yaparsan doğrudan bir4 exzcel tablosunu bile VT gibi kullanabilrsin.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla