Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Excel Veri Okuma Yöntemi Tercihiniz Nedir?
#1
Merhaba,

Birçok projede farklı yollarla Excel'den veri okuma işlemleri yapılabiliyor, konu ofis programları olunca farklı sorunlar ortaya çıkabiliyor. (Dosyayı tekrar okurken vb işlemlerde)

Siz bu konuda hangi yöntemleri tercih ediyorsunuz, bunu merak ediyorum. En stabil kullanabileceğim yöntemi arıyorum.

*Yapmak istediğim; Excel yüklü olmayan bir bilgisayarda excel dosyalarını okuyabilmek. (VCL projesi)

Araştırdığım yöntemler.
1-Delphi dışında MSSQL ile okumak.
2-ADOConnection'a bağlı AdoQuery ile veri okumak.
3-3. Parti bir Delphi bileşenleri ile okumak.

Teşekkürler.
Cevapla
#2
TMS, devex native Office bağımsız okuma yazma yapıyor. Buna ilave olarak zamanında flexcell eski Delphi sürümleri için (5-6-7) yazılmış open source bileşen kullandım fakat tam verimli değil veya github üzerinde bakarsan bir Rus arkadaş open xml ile bir bileşen yazmış. github.com/3ddark gidersen kendi github hesabımda da o proje vardı. Hatta o projeyi fmx ile çalışan şekilde kendi bilgisayarımda duzenlemistim

Bunlar sadece okuma değil yazma da yapıyor
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#3
Ben bu işi önceden ole nesnesiyle yapıyordum. okuduğum verileri bir mem datasete veya string gride basıyordum. Ancak bu method biraz zahmetliydi. Sonraları Sql Server openrowset veya linkedserver ilede okuduğum oldu. Ancak hiçbiri AdoQuery ile direk okuma tadını ve hızını vermedi. AdoQuery ile 0 kodla excel verilerini okuyup datasete sorunsuzca alıyorum. Harici bileşen hiç kullanmadım.
Sadece bir adoquery ve connectionstring yetiyor : Provider=MSDASQL.1;Persist Security Info=False;Data Source=Excel Files;Initial Catalog=C:\Users\MalcomX\Desktop\test\siparis.xlsx
Pek kullanmasamda dataseti edit-insert-post ettiğinde excelede yazıyor güncelliyor.
Herhangi bir insan bilgisayarın anlayabileceği kod yazabilir.  İyi programcılar ise insanların da anlayabileceği kodlar yazarlar. 
Martin Fowler / Refactoring 
Cevapla
#4
Selamlar
Öncelikle ben de, excel programının kurulu olup olmadığını kontrol ettirdikten sonra, excel sayfasındaki ilgili sütunları döngü ile alarak, veritabanında ilgili alanlara ekliyorum. Tek yapmam gereken, cell adresi belirlemek oluyor.
Cevapla
#5
Merhaba ;
Sizin de yazdığınız listede "1-Delphi dışında MSSQL ile okumak." seçeneğini kullanıyorum , pek sıkıntı yaşamadım ama ilk birkaç ayar bazen sorun çıkarsa da sonrasında gayet stabil çalışıyor.
Cevapla
#6
(10-11-2020, Saat: 20:48)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

Birçok projede farklı yollarla Excel'den veri okuma işlemleri yapılabiliyor, konu ofis programları olunca farklı sorunlar ortaya çıkabiliyor. (Dosyayı tekrar okurken vb işlemlerde)

Siz bu konuda hangi yöntemleri tercih ediyorsunuz, bunu merak ediyorum. En stabil kullanabileceğim yöntemi arıyorum.

*Yapmak istediğim; Excel yüklü olmayan bir bilgisayarda excel dosyalarını okuyabilmek. (VCL projesi)

Araştırdığım yöntemler.
1-Delphi dışında MSSQL ile okumak.
2-ADOConnection'a bağlı AdoQuery ile veri okumak.
3-3. Parti bir Delphi bileşenleri ile okumak.

Teşekkürler.

Merhaba,

Devexpress DxSpreadSheet bileşenini kullanabilirsiniz. Dediğinizi karşılıyor. Kullanıyorum aktif olarak.
Yazılım Topluluğumuz -> Tıklayın
Kişisel Tanıtım Sitem -> Tıklayın
20 y/o, sadece öğrenmeye odaklanmış, insancık..
Cevapla
#7
Merhaba,

Tüm cevaplar için teşekkür ederim, neredeyse tüm yöntemleri deneyerek aşağıdaki şekilde çalışmanın bana göre en zahmetsiz ve ücretsiz'i olduğunu gördüm. 

Aşağıdaki şekilde excel kurulu olmayan bir bilgisayarda hiçbir ek işleme gerek kalmadan veriler kolayca okunabiliyor.
  ADOConnection1.ConnectionString :=
    'Provider=Microsoft.JET.OLEDB.4.0;Data Source="'+AStream.FileName+'";Extended Properties="Excel 8.0;"';
 ADOConnection1.Connected := True;

  ADOQuery1.SQL.Text := 'SELECT * FROM [Sayfa1$]';
 ADOQuery1.Open;
 

*Ek önlem olarak; Veri girişi yapılacak excel dosyasında diğer tüm alanları kilitlemekte veri tutarlılığı açısından çok faydalı oluyor.

Teşekkürler.
Cevapla
#8
(11-11-2020, Saat: 17:50)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

Tüm cevaplar için teşekkür ederim, neredeyse tüm yöntemleri deneyerek aşağıdaki şekilde çalışmanın bana göre en zahmetsiz ve ücretsiz'i olduğunu gördüm. 

Aşağıdaki şekilde excel kurulu olmayan bir bilgisayarda hiçbir ek işleme gerek kalmadan veriler kolayca okunabiliyor.
  ADOConnection1.ConnectionString :=
    'Provider=Microsoft.JET.OLEDB.4.0;Data Source="'+AStream.FileName+'";Extended Properties="Excel 8.0;"';
 ADOConnection1.Connected := True;

  ADOQuery1.SQL.Text := 'SELECT * FROM [Sayfa1$]';
 ADOQuery1.Open;
 

*Ek önlem olarak; Veri girişi yapılacak excel dosyasında diğer tüm alanları kilitlemekte veri tutarlılığı açısından çok faydalı oluyor.

Teşekkürler.
Eline sağlık. Böylelikle ben de, illa ki excel kullanılmasını şart koşmama gerek kalmadı müşterilerime.
Cevapla
#9
Peki excel kayıt etmek istediğinizde nasıl kullanıyorsunuz. Mevcut DB kayıtlarını excel olarak kayıt edeceğim
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#10
(11-11-2020, Saat: 19:41)3ddark Adlı Kullanıcıdan Alıntı: Peki excel kayıt etmek istediğinizde nasıl kullanıyorsunuz. Mevcut DB kayıtlarını excel olarak kayıt edeceğim

Merhaba hocam,

Konu başlığında da belirtiğim gibi okumayla ilgili yöntemleri araştırmıştım.

Yazma konusunu ilgili dokümanın kendine has özellikleri olduğundan excel yüklü olmadan veya 3. parti bir bileşen olmadan olmayabilir, iyi araştırmak ve deneyimleri olanların paylaşması ile bu konuda hızlı sonuca ulaşabileceğimizi düşünüyorum.

Yukarıdaki yazınızdan, hücre hücre yazmak değil de excel olarak veriyi kaydetmek istediğinizi anlıyorum, bunun için; 

Unigui tarafında ek bir bileşene ihtiyaç duymadan aktaracağınız veriler bir grid'e bağlayıp çok profosyonel yapıda bir excel dosyasına dönüştürebilirsiniz.
Aşağıdaki şekilde bir  yapıyı tüm grid'ler için kullanıyorum.
procedure TDM.ExcelExport(Grid: TUniDBGrid; DosyaAd, Aciklama: string);
begin
 Grid.Exporter.Exporter := UniGridExcelExporter1;
 Grid.Exporter.FileName := DosyaAd;
 Grid.Exporter.Title := Aciklama;
 Grid.Exporter.IncludeGroups := True;
 Grid.Exporter.IncludeSummary := True;

 Grid.Exporter.ExportGrid;
end;

VCL ve FMX projelerinde daha önce kullandığım bir UNativeXLSExport.pas dosyası var kullandınız mı bilmiyorum, fena sayılmayacak kadar iyi şekilde verdiğiniz dataset'i xls dosyasına çeviriyor.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Aynı anda 10.000 farklı cihazdan veri alışverişi yapma. pro_imaj 23 1.342 27-12-2020, Saat: 11:22
Son Yorum: pro_imaj
  Problem - ZKTeco Cihazlardan Anlık Veri Alma mad85 14 2.086 18-12-2020, Saat: 17:34
Son Yorum: engerex
  Parmak izi okuyucudan veri çekmek ermanispir@gmail.com 15 5.170 30-11-2020, Saat: 09:26
Son Yorum: wiseman
  İki Tablo Arasında Veri Aktarma Ve Silme bünyamin68 6 501 28-11-2020, Saat: 11:03
Son Yorum: bünyamin68
  TIdTCPServer'dan seçili client'a veri gönderme [çözüldü] Yasemin 12 922 24-11-2020, Saat: 09:27
Son Yorum: pro_imaj



Konuyu Okuyanlar: 1 Ziyaretçi