.NET içerisinde bulunan Microsoft.Office.Interop.Excel, Microsoft Excel programı ile çeşitli işlemler yapmak için geliştirilmiş bir isimuzayıdır. Bu isimuzayını kullanarak Excel uygulamaları oluşturulabilir, çalışma kitapları ve sayfaları üzerinde veri işlemleri yapılabilir. İsimuzayının içerdiği sınıflardan en çok kullanılanları aşağıdaki gibidir:
- Application (Uygulama)
- Workbook (Çalışma Kitabı)
- Worksheet (Çalışma Sayfası)
Application (Uygulama) Sınıfı
Application (Uygulama) sınıfı, Excel uygulamaları çalıştırmak ve uygulama üzerinde çeşitli işlemler yapmak için kullanılır. Excel uygulaması, içinde workbook (çalışma kitabı) içermez, ancak program üzerinden çalışma kitabı eklenebilmekte ya da var olan bir çalışma kitabı açılabilmektedir.
Sınıf üzerinde tanımlı sık kullanılan metodlar aşağıdaki gibidir:
- Quit (Çık): Uygulamadan çıkış yapılmasını sağlar.
- Undo (Geri Al): Son yapılan işlemi geri alır.
Sınıf içindeki öznitelikler ise şu şekildedir:
- ActiveCell (Aktif Hücre): Kullanıcı tarafından seçilmiş (aktif) hüceriyi barındıran özniteliktir.
- ActiveWorkbook (Aktif Çalışma Kitabı): Üzerinde işlem yapılan (aktif) çalışma kitabını geri döndürür.
- DisplayFullscreen (Tam Ekran Görüntüle): Uygulamanın tam ekran görünüp görünmeyeceğini belirtir. True (doğru) ya da false (yanlış) değerleri almaktadır.
- DisplayScrollBar (Kaydırma Çubuğunu Göster): Kaydırma çubuğunun görünüp görünmeyeceğini belirtir. True (doğru) ya da false (yanlış) değerleri almaktadır.
- DisplayStatusBar (Durum Çubuğunu Göster): Uygulama çubuğunun görünüp görünmeyeceğini belirtir. True (doğru) ya da false (yanlış) değerleri almaktadır.
- Visible (Görünürlük): Uygulamanın görünürlüğünü denetler. True (doğru) ya da false (yanlış) değerleri almaktadır. False (yanlış) değeri verilmesi durumunda -varsayılan değeri budur- ekranda Excel uygulaması belirmez.
- Workbooks (Çalışma Kitabı): Uygulamanın konaklık ettiği çalışma kitaplarının tutulduğu diziyi belirtir. Dizi üzerinde çeşitli işlemler yapılabilmektedir.
Excel uygulamasına kitaplar iki farklı şekilde eklenebilir. Ekleme yöntemleri ve bu işlemleri gerçekleştiren metodlar aşağıdaki gibidir:
- Add (Ekle): Uygulamaya yeni bir çalışma kitabı eklemek için kullanılır.
- Open (Aç): Herhangi bir Excel belgesini çalışma kitabı olarak açmak için kullanılır. Yine bu metod gibi; OpenDatabase (VeritabanıAç) veritabanlarını,OpenText (MetinAç) metin dosyalarını OpenXML (XMLAç) XML (Extensible Markup Language - Genişletilebilir Biçimlendirme Dili) açmak için kullanılır.
Workbook (Çalışma Kitabı) Sınıfı
Excel'de workbook (çalışma kitabı) çalışma sayfalarını taşıyan yapıdır. Bir uygulamada, bir ya da birden çok çalışma kitabı bulunabilmektedir. Çalışma kitapları uygulamaya "Application (Uygulama) Sınıfı" bölümünde anlatıldığı gibi yeni eklenebilir ya da var olan bir belge açılabilir.
Sınıf üzerinde tanımlı sık kullanılan metodlar aşağıdaki gibidir:
- Activate (Aktifleştir): İlgili çalışma kitabını işlem yapılacak (aktif) konuma getirir. Böylece Application.ActiveWorkbook özniteliğiyle erişilebilir.
- Close (Kapat): Üzerinde çalışılan kitabı kapatır.
- Save (Kaydet): Kitabın kaydedilmesini sağlar. Çağrılması durumunda kitap, belgelerim altına kaydedilir.
- SaveAs (Farklı Kaydet): Bu metod kitabın dizin ve dosya adı belirtilerek kaydedilmesini sağlar. Metoda dizin ve dosya adı gönderilmezse kitap belgelerim altına kaydedilir.
Sınıf içindeki öznitelikler ise şu şekildedir:
- Saved (Kaydedildi mi): Üzerinde işlem yapılan kitabın kaydedilip keydedilmediğinin bilgisini tutar. True (doğru) ya da false (yanlış) değerleri almaktadır.
- Worksheets (Çalışma Sayfaları): Kitabın içinde barındırdığı sayfaları tutan bir dizidir. Sıradan bir dizi özellikleri taşır ve çalışma sayfası eklemek için Add (Ekle)metodu kullanılır.
Worksheet (Çalışma Sayfası) Sınıfı
Çalışma sayfaları Excel'de çalışma kitabının içindeki bölümlendirmelerdir. Çalışma sayfaları, kitaplara "Workbook (Çalışma Kitabı) Sınıfı" bölümünde anlatıldığı gibi eklenebilmektedir.
Sınıf üzerinde tanımlı sık kullanılan metodlar aşağıdaki gibidir:
- Aktivate (Aktifleştir): İlgili çalışma sayfasını işlem yapılacak (aktif) konuma getirir.
- PrintPreview (Baskı Önizleme): Üzerinde işlem yapılan çalışma sayfasının baskı önizlemesini açar.
- SaveAs (Farklı Kaydet): Çalışma sayfasını dizin ve dosya adı belirterek kaydeder.
- Select (Seç): Bu metod hangi sayfa yoluyla çağrılmışsa o sayfayı seçerek üzerinde işlem yapılmasını sağlar.
Sınıf içindeki öznitelikler ise şu şekildedir:
- Cells (Hücreler): Sayfa üzerindeki hücrelere ulaşan iki boyutlu bir dizidir. Değer olarak ilgili hücrede yazması gereken ifadeler
- Columns (Sütunlar): Çalışma sayfasındaki sütunları belirtir. Sütunlar üzerinden aralıklar seçilerek sütun genişliğini arttırmak gibi çeşitli işlemler yapılabilir.
- Name (İsim): Çalışma sayfasının ismidir. Sayfaya bu öznitelik üzerinden isim verilebilir.
- Rows (Satırlar): Çalışma sayfasındaki satırları belirtir. Sütunlar gibi, satırlar üzerinden aralıklar seçilerek çeşitli işlemler yapılabilir.
- Visible (Görünürlük): Uygulama sınıfında olduğu gibi sayfanın görünürlüğünü ayarlar. True (doğru) ya da false (yanlış) değerleri almaktadır.
Uygulama
Bu uygulamada veritabanı üzerineki öğrenciler ve fakülteler eşleştirilmiştir. Oluşturulan Excel uygulamasında her fakülte için farklı çalışma sayfasıd yaratılarak, sayfalarda o fakülteye kayıtlı öğrenciler listelenmiştir. Uygulamada kullanılan basit veritabanı yapısı aşağıdaki gibidir.
Excel isim uzayını kullanmadan önce projeye referansının eklenmesi gerekir. Referansı ekleme işlemi için aşağıdaki adımlar izlenir:
- Projeye sağ tıklanarak Add Reference (Referans Ekle) seçilir.
- COM sekmesi altındaki Microsoft Excel 14 Object Library (Microsoft Excel 14 Nesne Kütüphanesi) seçilerek OK (Tamam) düğmesine tıklanır. Böylece referans projeye dahil edilmiş olur.
Veritabanından öğrencileri ve fakülteleri okuyarak Excel belgesi sunan program aşağıdaki gibidir. Bu programda ilk döngü sayfaları oluştururken, ikinci döngü öğrencilerin fakültelerine göre sayfalara yazmaktadır.
static void Main()
{
OkulEntities vtModeli = new OkulEntities();
Application uygExcel = new Application();
Workbook kitExcel = uygExcel.Workbooks.Add();
Worksheet sayExcel;
List<int> lsatirSayisi = new List<int>();
var dbOgrenciler = from ogrenci in vtModeli.Ogrenci select ogrenci;
List<Ogrenci> lOgrenciler = dbOgrenciler.ToList();
var dbFakulteler = from fakulte in vtModeli.Fakulte select fakulte;
List<Fakulte> lFakulteler = dbFakulteler.ToList();
foreach (Fakulte fakulte in lFakulteler)
{
sayExcel = kitExcel.Worksheets.Add();
sayExcel.Name = fakulte.ad;
lsatirSayisi.Add(1);
((Range)sayExcel.Columns["A", Type.Missing]).ColumnWidth = 10;
((Range)sayExcel.Columns["B", Type.Missing]).ColumnWidth = 15;
((Range)sayExcel.Columns["C", Type.Missing]).ColumnWidth = 15;
}
foreach (Ogrenci ogrenci in lOgrenciler)
{
sayExcel = kitExcel.Worksheets[kitExcel.Worksheets.Count - (ogrenci.fakulteId + 3)];
sayExcel.Cells[lsatirSayisi[ogrenci.fakulteId], 1] = ogrenci.numara;
sayExcel.Cells[lsatirSayisi[ogrenci.fakulteId], 2] = ogrenci.ad;
sayExcel.Cells[lsatirSayisi[ogrenci.fakulteId], 3] = ogrenci.soyad;
lsatirSayisi[ogrenci.fakulteId] = lsatirSayisi[ogrenci.fakulteId] + 1;
}
uygExcel.Visible = true;
}
Program çalıştığı zaman aşağıdaki gibi bir Excel belgesi üretecektir: