Exeldeki veriyi StringGrid'e aktarmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Exeldeki veriyi StringGrid'e aktarmak
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..
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
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
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
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
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
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;
o döngüyü for next ten while do ya çevir. çok sorun olmaz.
örneği pseudo olarak yazdım
ö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
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
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 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;
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.
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
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog