Excelden veri alma hakkında (excel import)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 690
Kayıt: 28 Nis 2011 09:33
Konum: İstanbul

Excelden veri alma hakkında (excel import)

Mesaj gönderen greenegitim » 24 Nis 2013 09:46

Merhaba,
Excelden veri alırken
1) xlsx 2007 ve sonrası dosyalarından veri alabiliyormuz
2) herhangi bir max kayıt sayısı varmı exceldeki tüm kayıtları alabiliyormuyuz.
3) excelden veri alırken seçtiğimiz excel dosyasındaki en son kayıt kaçıncı kayıt döngüyü ona göre nasıl yapıyoruz.
Mücadele güzelleştirir!

Lord_Ares
Üye
Mesajlar: 1022
Kayıt: 15 Eki 2006 03:33
Konum: Çorlu

Re: Excelden veri alma hakkında (excel import)

Mesaj gönderen Lord_Ares » 24 Nis 2013 05:42

merhaba,
1-)Bildiğim kadarıyla versiyon farketmiyor, tümünden alabiliyoruz.
2-)Evet, tümünü alabilirsin.
3-) Ekte sana küçük bir örnek hazırladım incelersen kodların içinde açıklamada yazdım. delphi ile açmış olduğun excelin neresinde bilgi olduğunu variant tipinde bir değişkene şöyle alabilirsin. (BILGINERDE,EXCELDOSYASI:variant;
NOT: EKTE GÖNDERDİĞİM ÖRNEĞİ İLK AÇTIĞINDA TABLE1.DATABASENAME KISMINI KENDİNE GÖRE DÜZENLE YOKSA AÇILIŞTA HATA ALABİLİRSİN

BILGINERDE:=EXCELDOSYASI.ActiveWorkbook.worksheets[1].UsedRange;

EKTE GÖNDERMİŞ OLDUĞUM ÖRNEĞİN KODLARI ( FORMUNUZUN USES SATIRINA ComObj TANIMLAMAYI UNUTMAYIN)

//FORMUNUZDAKI implementation KISMININ HEMEN USTUNDEKİ VAR BLOĞUNA DEĞİŞKENLERİMİZİ TANIMLIYORUZ

Kod: Tümünü seç

var
  EXCELDOSYASI: Variant;               /// EXCEL DOSYASI İLE İŞLEM YAPMAK İÇİN TANIMLANIYOR
  KACSATIR,KACSUTUN:integer; /// EXCELDEBİLGİSAYISI ADLI PROCEDUR KAÇ SATIR BİLGİ OLDUĞUNU BU DEĞİŞKENLERE GÖNDERECEK
implementation  

EXCELDE KAÇ SATIR VE SUTUN BİLGİ OLDUĞUNU BULAN PROCEDURUMUZU FORMUNUZDAKİ implementation SONRAKİ KISIMDA OLUŞTURUYORUZ

Kod: Tümünü seç

procedure exceldebilgisayisi;
var
hangisatirdaverivar:variant;
begin
try
KACSATIR:=0; // BU DEĞİŞKENLERDEKİ DEĞERLERİ SIFIRLAYALIM Kİ TEKRAR ÇAĞIRILDIĞINDA ÜZERİNE EKLESİN
KACSUTUN:=0; // BU DEĞİŞKENLERDEKİ DEĞERLERİ SIFIRLAYALIM Kİ TEKRAR ÇAĞIRILDIĞINDA ÜZERİNE EKLESİN
hangisatirdaverivar:= EXCELDOSYASI.ActiveWorkbook.worksheets[1].UsedRange; // veri çalışma kitabı 1 deki hangi satırlarda ve sütünlarda var buluyor
           KACSATIR:= hangisatirdaverivar.rows.Count; /// kaç satır bilgi olduğunu rakamsal olarak buluyor.
           KACSUTUN:= hangisatirdaverivar.columns.Count; // kaç kolonda bilgi olduğunu rakamsal olarak buluyor.
except
end;
end;
ŞİMDİDE EXCELI AÇIP İÇİNDEKİ BİLGİLERİ DATAMIZA KAYDEDEN KODU YAZALIM

Kod: Tümünü seç


procedure TForm1.Button3Click(Sender: TObject);
 VAR
 EXCELDEKISATIR,EXCELDEKISUTUN:Integer;
 SAYFA: Variant;
BEGIN

       IF OpenDialog1.Execute THEN BEGIN
        EXCELDOSYASI:=CreateOleObject('excel.application');
        EXCELDOSYASI.Visible:=false;
          TRY
          EXCELDOSYASI.workbooks.open[OpenDialog1.FileName];
          exceldebilgisayisi;
          FOR EXCELDEKISATIR:=1 to KACSATIR DO BEGIN
           Table1.Append;
           Table1BARKODNO.AsString:= (exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,1].Value);
           Table1URUNADI.AsString:= (exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,2].Value);
           Table1.Refresh;
           END;

    FINALLY

     IF NOT VarIsEmpty(EXCELDOSYASI) THEN
     BEGIN
        EXCELDOSYASI.DisplayAlerts := False;
        EXCELDOSYASI.Quit;
        EXCELDOSYASI := Unassigned;
     END;
   END;
   ShowMessage('AKTARMA İŞLEMİ TAMAMLANDI.');
   END;
END;

Dosya ekleri
excell.rar
EXCELDEN BİLGİ ALMA
(14.47 KiB) 449 kere indirildi

tsnuman
Üye
Mesajlar: 1
Kayıt: 14 Mar 2018 01:29

Re: Excelden veri alma hakkında (excel import)

Mesaj gönderen tsnuman » 14 Mar 2018 01:31

bu kodu delphi kaçta kullanabilirim

VCLcan
Üye
Mesajlar: 15
Kayıt: 08 Şub 2017 11:27

Re: Excelden veri alma hakkında (excel import)

Mesaj gönderen VCLcan » 16 Mar 2018 06:17

Ben bu kodu çalışmalarımda kullanıyorum.
Şu ana kadar hepsinde çalıştı.
En son xe5 te kullandım. sorun yok.
Çok temiz bir kod.

akuyumcu63
Üye
Mesajlar: 384
Kayıt: 02 Tem 2007 08:43

Re: Excelden veri alma hakkında (excel import)

Mesaj gönderen akuyumcu63 » 22 May 2018 10:18

merhaba;
yukarıdaki kodu excelden veri aktarırken kullanıyorum güzel çalışıyor. ancak bazı excel dosyalarında şu sorunla karşılaşıyorum. excel dosyasında 30 kayıt olduğunu varsayalım kayıtları aktarınca 80 kayıt geliyor 30 dan sonrası boş kayıt olarak geliyor. bunu nasıl engelleyebilirim.
İsteyen, yapabildiğinden daha fazlasını yapar.

ertank
Üye
Mesajlar: 1111
Kayıt: 11 Eyl 2015 11:45

Re: Excelden veri alma hakkında (excel import)

Mesaj gönderen ertank » 22 May 2018 04:26

Örnek okuma kodunuzu paylaşabilir misiniz? Eğer örnek kodu aynen kullanıyor iseniz aşağıdaki kontrolü yaparak boş olmaması gereken hücreler dolu ise veri okuması yapmanızda fayda var:

Kod: Tümünü seç

if not VarIsNull(exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,1].Value) then
begin
  // aktarma yapılsın
end;

Lord_Ares
Üye
Mesajlar: 1022
Kayıt: 15 Eki 2006 03:33
Konum: Çorlu

Re: Excelden veri alma hakkında (excel import)

Mesaj gönderen Lord_Ares » 30 May 2018 12:51

Kullandığınız excel dosyasını paylaşırsanız birde biz inceleyip hatayı bulmaya çalışalım. Bu kodu olduğu gibi kullandıysanız hata oluşmaması gerekli. Gözden kaçırdığınız birşey olmalı (örneğin boş görünen fakat başka yerden veri çeken excel hücreleri gibi..)

Cevapla