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;