procedure TForm1.Button1Click(Sender: TObject);
var
liste : TStrings;
mode : TTreeNode;
index : Integer;
begin
if OpenDialog1.Execute then
begin
ADOConnection1.Connected := False;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OleDB.4.0;' + 'Data Source' +
OpenDialog1.FileName+ ';' + 'Extended Properties=Excel 8.0;';
ADOConnection1.Connected := True;
ADOConnection1.GetTableNames(liste,True);
TreeView1.Items.AddFirst(nil,'Excel Sayfaları');
for index := 0 to liste.Count-1 do
begin
TreeView1.Items.AddChild(TreeView1.TopItem,liste.Strings[index]);
end;
end;
end;
end.
var
Resmi_Tatil_Karti: TResmi_Tatil_Karti;
EXCELDOSYASI: Variant;
KACSATIR,KACSUTUN:integer;
implementation
{$R *.dfm}
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ütunlarda 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;
procedure TResmi_Tatil_Karti.Yukle_BtnClick(Sender: TObject);
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
DM.RESMI_TATIL.Append; //TABLE1 DATAMI KAYIT GİRMEK İÇİN AÇ
DM.RESMI_TATILTATIL_ADI.Value:= (exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,1].Value); // TABLE DAKİ RESMİ TATİL ADI 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] )
DM.RESMI_TATILTATIL_TARIHI.Value:= (exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,2].Value); // TABLE DAKİ RESMİ TATİL TARİHİ 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
DM.RESMI_TATIL.Post;
End;
ShowMessage('Aktarma İşlemi Tamamlandı.');
End Else
ShowMessage('Aktarma İşlemi İptal Edildi.');
end;
Muhtemelen dosyanız XLSX formatında. "Microsoft.Jet.OleDB.4.0" sürücüsü ile XLSX formatına erişemezsiniz. Bu yüzden dosyanızı XLS olarak kaydedin veya XLSX formatı için "Microsoft.ACE.OLEDB.12.0" sürücüsünü kullanın. Sürücü sisteminizde yok ise https://www.microsoft.com/en-us/downloa ... x?id=13255 adresinden indirebilirsiniz. Bununla tüm excel formatlarına erişebilirsiniz.
"Microsoft.ACE.OLEDB.12.0" sürücüsü yani XLSX formatı için ConnectionString;
Hocam çok sağolun ama bir türlü problemi geçemedim "Microsoft ODBC driver manager veri kaynağı adı bulunamadı ve varsayılan sürücü belirilmemiş" şeklinde hata veriyor odbc den internette araştırıp yapmadığım kalmadı faklı işletim sistemlerinde denedim yine olmadı
İşletim sistemleri: windows 10 64 bit ve windows 7 32 bit
office : office 2007 ve office 2016 plus
Göndermiş olduğun dosyayı inceledim. Birkaç düzenleme yapıp çalışır hale getirdim. Umarım yapmak istediğin gibi olmuştur. Yalnız proje sende çalışmazsa eklemen gereken bir şey var tarif edeyim;
1. Component | Import Component
2. Import a Type Library
3. Next
4. Microsoft Excel 12.0 Object Library
5. Next
6. Next
7. Next
8. Finish
Bu adımlardan sonra Excel_TLB Uniti aktif olacaktır. Bu arada XE8 ile düzenledim. Pek bir fark olacağını zannetmiyorum. Düzenlediğim projeyi ve kullandığım excel dosyasını ekliyorum. İyi çalışmalar.
isoaltunay yazdı:Hocam çok sağolun ama bir türlü problemi geçemedim "Microsoft ODBC driver manager veri kaynağı adı bulunamadı ve varsayılan sürücü belirilmemiş" şeklinde hata veriyor odbc den internette araştırıp yapmadığım kalmadı faklı işletim sistemlerinde denedim yine olmadı
İşletim sistemleri: windows 10 64 bit ve windows 7 32 bit
office : office 2007 ve office 2016 plus
Kusura bakmayın, kodunuza baktığımda ConnectionString'in hatalı yazıldığını gördüm. Ayrıca, önceki cevabımda da ConnectionString'i hatalı yazdığımı da fark ettim. ConnectionString'in başındaki "Provider=" ifadesini bir şekilde yazmayı unutmuşum. Siz de bu hatayı görmemişsiniz. Aşağıdaki gibi yaparsanız sorununuz çözülecektir.
Bir şey daha var. Kdunuzu denediğimde yine hata aldım. Bunun nedeni liste değişkenini create etmediğiniz için. Kodunuza onu da ekledim.
if OpenDialog1.Execute then
begin
ADOConnection1.Connected := False;
ADOConnection1.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' +
OpenDialog1.FileName + ';' + 'Extended Properties=Excel 12.0;';
ADOConnection1.Connected := True;
liste := TStringList.Create;
ADOConnection1.GetTableNames(liste,True);
TreeView1.Items.AddFirst(nil,'Excel Sayfaları');
for index := 0 to liste.Count-1 do
begin
TreeView1.Items.AddChild(TreeView1.TopItem,liste.Strings[index]);
end;
liste.free;
end;
isoaltunay yazdı:Hocam çok sağolun ama bir türlü problemi geçemedim "Microsoft ODBC driver manager veri kaynağı adı bulunamadı ve varsayılan sürücü belirilmemiş" şeklinde hata veriyor odbc den internette araştırıp yapmadığım kalmadı faklı işletim sistemlerinde denedim yine olmadı
İşletim sistemleri: windows 10 64 bit ve windows 7 32 bit
office : office 2007 ve office 2016 plus
Kusura bakmayın, kodunuza baktığımda ConnectionString'in hatalı yazıldığını gördüm. Ayrıca, önceki cevabımda da ConnectionString'i hatalı yazdığımı da fark ettim. ConnectionString'in başındaki "Provider=" ifadesini bir şekilde yazmayı unutmuşum. Siz de bu hatayı görmemişsiniz. Aşağıdaki gibi yaparsanız sorununuz çözülecektir.
Bir şey daha var. Kdunuzu denediğimde yine hata aldım. Bunun nedeni liste değişkenini create etmediğiniz için. Kodunuza onu da ekledim.
if OpenDialog1.Execute then
begin
ADOConnection1.Connected := False;
ADOConnection1.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' +
OpenDialog1.FileName + ';' + 'Extended Properties=Excel 12.0;';
ADOConnection1.Connected := True;
liste := TStringList.Create;
ADOConnection1.GetTableNames(liste,True);
TreeView1.Items.AddFirst(nil,'Excel Sayfaları');
for index := 0 to liste.Count-1 do
begin
TreeView1.Items.AddChild(TreeView1.TopItem,liste.Strings[index]);
end;
liste.free;
end;
çok sağolun hocam elinize sağlık bi problem daha var ama kendi m cözmeye çalışıyorum her seferinde size sormak istemiorum çözemez isem tekrar başınızı ağırtabilir miyim