Delphi ile MS Excel Sayfalarına Erişme ve Yönetme

Bu adım adım kılavuzda, Microsoft Excel'e nasıl bağlanacağı, sayfa verilerinin nasıl alınacağı ve DBGrid kullanılarak verilerin düzenlenmesinin nasıl etkinleştirileceği açıklanmaktadır. Ayrıca, işlem sırasında ortaya çıkabilecek en yaygın hataların bir listesini ve bunlarla nasıl başa çıkılacağını da bulacaksınız.

Aşağıda Kapsananlar:

  • Excel ve Excel arasında veri aktarma yöntemleri Delphi. İle Excel'e bağlanma ADO (ActiveX Veri Nesneleri) ve Delphi.
  • Delphi ve ADO kullanarak Excel hesap tablosu düzenleyicisi oluşturma
  • Excel'den veri alınıyor. Excel çalışma kitabındaki bir tabloya (veya aralığa) başvurma.
  • Excel alanı (sütun) türleri hakkında bir tartışma
  • Excel sayfalarını değiştirme: satırları düzenleme, ekleme ve silme.
  • Delphi uygulamasından Excel'e veri aktarma. Bir çalışma sayfası nasıl oluşturulur ve MS Access veritabanından özel verilerle nasıl doldurulur.

Microsoft Excel'e Bağlanma

Microsoft Excel güçlü bir elektronik tablo hesap makinesi ve veri analiz aracıdır. Excel çalışma sayfasının satırları ve sütunları, bir veritabanı tablosunun satırları ve sütunlarıyla yakından ilişkili olduğundan, birçok geliştirici analiz amacıyla verilerini bir Excel çalışma kitabına aktarmayı uygun bulmaktadır; ve daha sonra verileri uygulamaya geri getirin.

instagram viewer

Uygulamanız ve Excel arasında veri alışverişinde en yaygın kullanılan yaklaşım Otomasyon. Otomasyon, çalışma sayfasına dalmak, verilerini ayıklamak ve DBGrid veya StringGrid gibi ızgara benzeri bir bileşen içinde görüntülemek için Excel Nesne Modeli'ni kullanarak Excel verilerini okumak için bir yol sağlar.

Otomasyon, çalışma kitabındaki verileri bulma konusunda en büyük esnekliğin yanı sıra çalışma sayfasını biçimlendirme ve çalışma zamanında çeşitli ayarlar yapma olanağı sunar.

Verilerinizi Otomasyon olmadan Excel'e / Excel'den aktarmak için aşağıdakiler gibi diğer yöntemleri kullanabilirsiniz:

  • Verileri virgülle ayrılmış bir metin dosyasına yazın ve Excel'in dosyayı hücrelere ayrıştırmasına izin verin
  • DDE (Dinamik Veri Değişimi) kullanarak veri aktarma
  • ADO kullanarak verilerinizi bir çalışma sayfasına / çalışma sayfasından aktarın

ADO Kullanarak Veri Aktarımı

Excel JET OLE DB uyumlu olduğu için ADO (dbGO veya AdoExpress) kullanarak Delphi ile ona bağlanabilir ve SQL sayfasının yayınlanmasıyla çalışma sayfasının verilerini ADO veri kümesine (tıpkı herhangi bir veritabanına karşı bir veri kümesi açacağınız gibi) tablo).

Bu şekilde, ADODataset nesnesinin tüm yöntemleri ve özellikleri Excel verilerini işlemek için kullanılabilir. Başka bir deyişle, ADO bileşenlerini kullanmak, veritabanı olarak Excel çalışma kitabını kullanabilen bir uygulama oluşturmanıza olanak tanır. Bir başka önemli gerçek, Excel'in işlem dışı olmasıdır ActiveX sunucusu. ADO, işlem içi çalışır ve maliyetli işlem dışı çağrıların yükünü azaltır.

Excel'e ADO kullanarak bağlandığınızda, yalnızca bir çalışma kitabına ve çalışma kitabından ham veri alışverişi yapabilirsiniz. ADO bağlantısı, sayfa biçimlendirmek veya hücrelere formül uygulamak için kullanılamaz. Ancak, verilerinizi önceden biçimlendirilmiş bir çalışma sayfasına aktarırsanız, biçim korunur. Veriler uygulamanızdan Excel'e eklendikten sonra, çalışma sayfasındaki (önceden kaydedilmiş) bir makro kullanarak koşullu biçimlendirmeleri gerçekleştirebilirsiniz.

MDAC'nin bir parçası olan iki OLE DB Sağlayıcısı ile ADO kullanarak Excel'e bağlanabilirsiniz: Microsoft Jet OLE DB Sağlayıcısı veya ODBC Sürücüleri için Microsoft OLE DB Sağlayıcısı. Yüklenebilir Dizine Alınmış Sıralı Erişim Yöntemi (ISAM) sürücüleri aracılığıyla Excel çalışma kitaplarındaki verilere erişmek için kullanılabilecek Jet OLE DB Sağlayıcısı'na odaklanacağız.

İpucu: Bkz. Delphi'ye Yeni Başlayanlar Kursu ADO'da yeniyseniz ADO Veritabanı Programlama.

ConnectionString Büyüsü

ConnectionString özelliği ADO'ya veri kaynağına nasıl bağlanacağını bildirir. ConnectionString için kullanılan değer, ADO'nun bağlantı kurmak için kullandığı bir veya daha fazla bağımsız değişkenden oluşur.

Delphi'de, TADOConnection bileşeni ADO bağlantı nesnesini kapsar; Bağlantı özellikleri aracılığıyla birden çok ADO veri kümesi (TADOTable, TADOQuery vb.) bileşeni tarafından paylaşılabilir.

Excel'e bağlanmak için, geçerli bir bağlantı dizesi yalnızca iki ek bilgi içerir - çalışma kitabının tam yolu ve Excel dosyası sürümü.

Meşru bir bağlantı dizesi şöyle görünebilir:

ConnectionString: = 'Sağlayıcı = Microsoft. Jet. OLEDB.4.0; Veri Kaynağı = C: \ MyWorkBooks \ myDataBook.xls; Genişletilmiş Özellikler = Excel 8.0; ';

Jet tarafından desteklenen bir dış veritabanı biçimine bağlanırken, bağlantının genişletilmiş özelliklerinin ayarlanması gerekir. Bizim durumumuzda, bir Excel "veritabanına" bağlanırken, Excel dosya sürümünü ayarlamak için genişletilmiş özellikler kullanılır.

Excel95 çalışma kitabı için bu değer "Excel 5.0" dir (tırnak işaretleri olmadan); Excel 97, Excel 2000, Excel 2002 ve ExcelXP için "Excel 8.0" kullanın.

Önemli: Jet 3.5, ISAM sürücülerini desteklemediğinden Jet 4.0 sağlayıcısını kullanmanız gerekir. Jet Provider'ı sürüm 3.5 olarak ayarlarsanız, "Yüklenebilir ISAM bulunamadı" hatası alırsınız.

Başka bir Jet genişletilmiş özelliği "HDR =" dir. "HDR = Evet", aralıkta bir başlık satırı olduğu anlamına gelir; bu nedenle Jet, seçimin ilk satırını veri kümesine eklemez. "HDR = Hayır" belirtilirse, sağlayıcı veri kümesine aralığın (veya adlandırılmış aralık) ilk satırını dahil eder.

Aralıktaki ilk satır varsayılan olarak başlık satırı olarak kabul edilir ("HDR = Evet"). Bu nedenle, sütun başlığınız varsa, bu değeri belirtmeniz gerekmez. Sütun başlıklarınız yoksa, "HDR = Hayır" belirtmeniz gerekir.

Artık hazırsınız, şimdi bazı kodlar için hazır olduğumuzdan, işlerin ilginç hale geldiği kısım bu. Delphi ve ADO'yu kullanarak basit bir Excel Elektronik Tablo düzenleyicisinin nasıl oluşturulacağını görelim.

Not: ADO ve Jet programlama hakkında bilgi sahibi olmasanız bile devam etmelisiniz. Gördüğünüz gibi, bir Excel çalışma kitabını düzenlemek, herhangi bir standart veritabanından veri düzenlemek kadar basittir.