Excelden Paradoxa Aktarım Hk.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
isoaltunay
Üye
Mesajlar: 27
Kayıt: 01 Tem 2013 09:43

Excelden Paradoxa Aktarım Hk.

Mesaj gönderen isoaltunay »

Arkdaşlar buradaki kodlarda sutünlarım sabit ama bazen bu satır olayım değişiyor ama kodlarda satır sayım 5 i geçerse almıyor 5 den sonrasını bu kodu yani

Kod: Tümünü seç

for satir:=1 to 5 do
nasıl düzenlenebilir bazen satırım 10 oluyor bazen 100 bazen 78 ne yapılabilir burada

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);
end;
Screen.Cursor := crHourGlass;
sheet := book.worksheets[1];
for satir:=1 to 5 do
  begin
   str := sheet.cells[satir, 1];
   if (str <> '') then
    begin
     Update;
     Table1.Insert;
for sutun:=1 to 3 do
     Table1.Fields[sutun-1].AsString :=sheet.cells[satir,sutun];
     Table1.Post;
    end;
  end;
Excel.quit;
excel:=Unassigned;
 Screen.Cursor := crDefault;
 ShowMessage(''+'Veri Aktarımı Tamamlandı. ');
end;
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Excelden Paradoxa Aktarım Hk.

Mesaj gönderen xozcanx »

viewtopic.php?f=2&t=31322
yukarıdaki linki incele orada hazırladığım programda sen kendin editler yardımıyla belirliyorsun hangi alanlardan başlayıp bitireceğini örnek programda altta mevcut..

http://s3.dosya.tc/server7/xSXFhE/EXEL.rar.html
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Excelden Paradoxa Aktarım Hk.

Mesaj gönderen Lord_Ares »

ben genelde şu şekilde kullanıyorum kendi otomatik kaç satır varsa okadar işlem yapıyo

implementation kısmının hemen üstünde gerekli değişkenlerimi tanımlıyorum.

Kod: Tümünü seç

var 
  Form1: TForm1;
  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ĞİŞKENLEREGÖNDERECEK 
implementation   
bir tane procedure oluşturup dilediğim yerden bu bilgiyi alabilyorum. Sen istersen farklıda kullanabilirsin. Burada işi yapan kısım UsedRange kısmıdır.

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;
KULLANIM ŞEKLİ

Kod: Tümünü seç


procedure TForm1.Button1Click(Sender: TObject); /// BURADAKİ NORMAL HALİ , HATA KONTROLU YOK
var
EXCELDEKISATIR,EXCELDEKISUTUN:Integer;
sayfa: Variant;
BEGIN
       IF OpenDialog1.Execute THEN                          //OPEN DİALOG İLE EXCEL DOSYASINI SEÇTİRELİM
       BEGIN
       exceldosyasi:=CreateOleObject('excel.application'); //EXCELİ OLUŞTUR
       exceldosyasi.Visible:=true;                         //EXCEL DOSYASI AÇILDIĞINDA EKRANDA GÖRÜLSÜN
       exceldosyasi.workbooks.open[OpenDialog1.FileName];  //Excel dosyasını open dialogtan seçtirir
       exceldebilgisayisi;                                 //EXCELDE KAÇ SATIR VE SÜTÜN BİLGİ VAR AL, YUKARIDA implementation KISMINDA TANIMLADIĞIMIZ KAÇSATIR DEĞİŞKENİNE AKTART
       FOR EXCELDEKISATIR:=1 to KACSATIR DO BEGIN          //EXCELDEKİ 1 SATIRDAN BAŞLAYIP KAÇSATIRBİLGİ VAR DAKİ SAYI KADAR İŞLEM YAP , ENSON KAÇINCI SATIRDA BİLGİ OLDUĞUNU KAÇSATIR VARDAN ÖĞRENEBİLİRSİN
       Table1.Append;                                      //TABLE1 DATAMI KAYIT GİRMEK İÇİN AÇ
       Table1BARKODNO.AsString:= (exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,1].Value); // TABLE DAKİ BARKODU ALANINA EXCELİN BİRİNCİ SATIR VE BİRİNCİ SÜTÜNDAKİBİLGİYİ AL EKLE( KODUN BURASINDAKİ 1 RAKAMI 1 SÜTÜN DEMEK [EXCELDEKISATIR,1] )
       Table1URUNADI.AsString:= (exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,2].Value);  // TABLE DAKİ URUNADI KISMINA EXCELIN BİRİNCİ SATIR VE IKINCI SUTUNDAKİ BİLGİYİ AL ( KODUN SONUNDA Kİ [EXCELDEKISATIR,2]  İKİ RAKAMI SÜTÜN İKİDEKİ BİLGİ DEMEK
       Table1.Refresh;                                    //TABLE KAYIT İŞLEMİ TAMAMLANDI GÜNCELLEKİ DEĞİŞİKLİKLER EKRANDA GÖRÜNSÜN
       END; /// FOR BEGININ ENDI
       END;/// IF BEGININ ENDI
       ShowMessage('AKTARMA İŞLEMİ TAMAMLANDI.');
end;



IKINCI KULLANIM ŞEKLİDE ŞÖYLE , TRY END İLE HATA KONTROLU YAPTIRARAK. SEÇİM SENİN HANGİSİNİ İSTERSEN KULLAN

Kod: Tümünü seç

procedure TForm1.Button3Click(Sender: TObject); /// BURADAKİ HATA OLDUĞUNDA PROGRAM ÇAKMASIN DİYE TRY BLOGUNDA YAZILMIŞ HALİ
 VAR
 EXCELDEKISATIR,EXCELDEKISUTUN:Integer;
 SAYFA: Variant;
BEGIN

       IF OpenDialog1.Execute THEN BEGIN                          //OPEN DİALOG İLE EXCEL DOSYASINI SEÇTİRELİM
        EXCELDOSYASI:=CreateOleObject('excel.application');      // Excel oluşturuluyor
        EXCELDOSYASI.Visible:=false;                             //EXCEL DOSYASI AÇILDIĞINDA EKRANDA GÖRÜNMESİN
          TRY
          EXCELDOSYASI.workbooks.open[OpenDialog1.FileName];    //OPEN DİALOGTA SEÇİLEN EXCELDOSYASINI VE KİTABINI AÇ
          exceldebilgisayisi;                                  //EXCELDE KAÇ SATIR VE SÜTÜN BİLGİ VAR AL, YUKARIDA implementation KISMINDA TANIMLADIĞIMIZ KAÇSATIR DEĞİŞKENİNE AKTAR
          FOR EXCELDEKISATIR:=1 to KACSATIR DO BEGIN          //EXCELDEKİ 1 SATIRDAN BAŞLAYIP KAÇSATIRBİLGİ VAR DAKİ SAYI KADAR İŞLEM YAP , ENSON KAÇINCI SATIRDA BİLGİ OLDUĞUNU KAÇSATIR VARDAN ÖĞRENEBİLİRSİN
           Table1.Append;                                      //TABLE1 DATAMI KAYIT GİRMEK İÇİN AÇ
           Table1BARKODNO.AsString:= (exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,1].Value); // TABLE DAKİ BARKODU ALANINA EXCELİN BİRİNCİ SATIR VE BİRİNCİ SÜTÜNDAKİBİLGİYİ AL EKLE( KODUN BURASINDAKİ 1 RAKAMI 1 SÜTÜN DEMEK [EXCELDEKISATIR,1] )
           Table1URUNADI.AsString:= (exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,2].Value);  // TABLE DAKİ URUNADI KISMINA EXCELIN BİRİNCİ SATIR VE IKINCI SUTUNDAKİ BİLGİYİ AL ( KODUN SONUNDA Kİ [EXCELDEKISATIR,2]  İKİ RAKAMI SÜTÜN İKİDEKİ BİLGİ DEMEK
           Table1.Refresh;                                    //TABLE KAYIT İŞLEMİ TAMAMLANDI GÜNCELLEKİ DEĞİŞİKLİKLER EKRANDA GÖRÜNSÜN
          END;

    FINALLY
    // IŞLEM BİTTİ EXCEL DOSYASI KAPATILIRKEN YAPILAN İŞLEMLER.
     IF NOT VarIsEmpty(EXCELDOSYASI) THEN  /// EXCEL DOSYASINDA DEĞİŞİKLİK YAPIP KAPATMAYA ÇALIŞTIMIZDA BU DOSYADAKİ DEĞİŞİKLİKLER KAYDEDİM Mİ DER ONU DEMESİN
     BEGIN
        EXCELDOSYASI.DisplayAlerts := False;  //Excel mesajlarını görünteleme
        EXCELDOSYASI.Quit;                   // EXCELDEN ÇIK
        EXCELDOSYASI := Unassigned;
     END;
   END;
   ShowMessage('AKTARMA İŞLEMİ TAMAMLANDI.');
   END;
END;

ÜSTTEKİ KODLARIN YANINDA AÇIKLAMALARI MEVCUT , KAFAN KARIŞMASIN DİYE KODUN AÇIKLAMALARI SİLİNMİŞ HALİDE BURADA

1) USES KISMINDA COMOBJ Yİ EKLEMEYİ UNUTMA
2)implementation KISMININ USTUNDEKİ VAR BLOĞUNDA GEREKLİ DEĞİŞKENLERİ TANIMLA
EXCELDOSYASI: Variant;
KACSATIR,KACSUTUN:integer;

PROCEDURUMUZ ŞU

Kod: Tümünü seç

procedure exceldebilgisayisi;
var
hangisatirdaverivar:variant;
begin
try
KACSATIR:=0; 
KACSUTUN:=0; 
hangisatirdaverivar:= EXCELDOSYASI.ActiveWorkbook.worksheets[1].UsedRange; 
           KACSATIR:= hangisatirdaverivar.rows.Count; 
           KACSUTUN:= hangisatirdaverivar.columns.Count; 
except
end;
end;

KULLANIM ŞEKLİ

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject); 
var
EXCELDEKISATIR,EXCELDEKISUTUN:Integer;
sayfa: Variant;
BEGIN
       IF OpenDialog1.Execute THEN                         
       BEGIN
       exceldosyasi:=CreateOleObject('excel.application');
       exceldosyasi.Visible:=true;                        
       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; 
       END;
       ShowMessage('AKTARMA İŞLEMİ TAMAMLANDI.');
end;

Cevapla