Excel'den bilgi alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Excel'den bilgi alma

Mesaj gönderen naile »

Belli bir formatta excel dosyam var. Şöyle;

Stok kodu Stok Adı Miktar
------------ ---------- -------
............... ............ .........

Şeklinde. Bu bilgileri StringGride almakla ilgili bir fikri olan veya uygulama yapan varmı acaba?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bunun için bir kaç yol var.

1. Eğer bu Excel sayfaları çok fazla değilse, csv formatında kaydedip okuyabilirsiniz.

2. OLE kullanabilirsiniz.

3. Import - Export bileşenleri var bunları kullanabilirsiniz.

Kolay gelsin.
NightFlight
Üye
Mesajlar: 43
Kayıt: 19 Haz 2003 12:26

Mesaj gönderen NightFlight »

ado bileşenleri kulanabilirsin adodatasetle bir odbc baglantısı kur excele dbgrid bileşeninde verileri görebilirsin oke
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Teşekkürler... Ole ile yapılmış bir örnek buldum. Düzenleme yapıp makale ve ipuçları bölümüne atarım inşallah.
Kullanıcı avatarı
zayfin
Üye
Mesajlar: 24
Kayıt: 19 Haz 2003 07:04
Konum: istanbul
İletişim:

Mesaj gönderen zayfin »

merhaba;
ben excel e bilgi yollamak istedğimde böyle yolluyorum.
zannedersem bunun tersi sizin işinizi görebilir.

****************************************************

Kod: Tümünü seç

procedure TForm6.Button3Click(Sender: TObject);
var
  book,excel,sheet:variant;
  i:integer;
begin
  i:=1;
  try
    excel:=createoleobject('excel.application');
    book:=excel.workbooks.add;
    excel.visible:=true;
    sheet:=book.worksheets[1];
  except
     raise exception.Create('Excel Açılamadı..');
  end;
  query1.First;
  while not query1.Eof do
  begin
     sheet.cells[i,1]:=query1.FieldByName('ad').asstring;
     sheet.cells[i,2]:=query1.FieldByName('soyad').AsString;
     sheet.cells[i,3]:=query1.FieldByName('miktar').AsCurrency;
     sheet.cells[i,4]:=query1.FieldByName('tur').AsString;
     sheet.cells[i,5]:=query1.FieldByName('tarih').AsString;
     sheet.cells[i,6]:=query1.FieldByName('makbuzno').AsString;
     i:=i+1;
     query1.Next;
  end;
******************************
teşekkürler
sağlıcakla kalın
Kullanıcı avatarı
ayhanarican
Üye
Mesajlar: 37
Kayıt: 03 Tem 2003 01:24
Konum: İzmir
İletişim:

Mesaj gönderen ayhanarican »

Bunu açıklamak için önce Excel Makrolarından bahsetmeliyim.
1-) Bilgilerinizin bulunduğu Excel dosyasının "Stok.xls" olduğunu farzedelim
2-) Excel 'in Araçlar menüsünden "Makro/Yeni Makro kaydet" seçin
3-) bir isim verin (örnek : ExportData)
4-) Sayfada herhangi bir hücreyi tıklayın ve birşeyler yazın
5-) Excel 'in Araçlar menüsünden "Makro/Makrolar" seçin
6-) "ExportData" yada siz ne olarak kaydettiyseniz Seçin "Düzenle" deyin
7-) Görüyorsunuz sizin yazdığınız yazıları koda dönüştürmüş
8-) Bu kodları silin ve şunları yazın

Open "C:\Stok.csv" For Output As #1
S=3; ' dataların başladığı satır numarası
N=5; ' dataların sonlandığı satır numarası
For I=S To N
StokKod$=Cells(I,1)
StokAd$=Cells(I,2)
Print #1,StokKod$+";"+StokAd$
Next

Close #1

8-) Bu Kod çalıştığında "Stok.csv" isimli "C:\" rootunda bir dosya oluşturur.
9-) Bu Dosyayı Excel tanır ve açar
10-) Fakat bizim istediğimiz bu değil ,dosyayı delphiden kullanmak.Bunun için bu csv dosyasını StringGrid içine alan kodu yazmakta artık sana kalıyor.
11-) Aslında Veriler Zaten bir csv dosyasında olsaydı bu kadar işleme hiç gerek kalmayacak dosyayı direk kullanacaktık. :)
mavsar

Mesaj gönderen mavsar »

Olay belki sizin açınızdan kapanmıştır fakat ben daha sonraki sorular için bir şeyler yazmak istedim. Eğer bir sefere mahsus bu işlemi yapacaksanız verileri her birini ayrı kolona göre ayarladıktan sonra (Zaten kolonlar farklı ise problem değil, fakat aynı ise ortak ayraca göre dönüşüm yaparsınız) DBaseIV dosyası olarak kaydedin. Ardından Delphi de basit bir table ile bu dbf dosyasını alarak istediğiniz her türlü takla vb. spor dallarını yaptırabilirsiniz.

Kolay gelsin
Kullanıcı avatarı
sh@nku
Üye
Mesajlar: 15
Kayıt: 06 Ağu 2003 10:55
Konum: İstanbul
İletişim:

Mesaj gönderen sh@nku »

Excel verilerinizin satur sayısı makul ise kullanım pratikliği açısından excel'den copy, string grid'e paste şeklinde bir yaklaşım da uygun olabilir.
Tabii string gride paste yapmak için bir kod yazmak gerekiyor
inandığını yaşamayan insan, yaşadığına inanır
Cevapla