Memik Yanık - Kişisel Web Sitesi Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS RSS | İletişim

Datagridden Excel Veri Aktarmak - C#


Öncelikle DataGrid'in satırlarına nasıl ulaşıldığını öğrenmen lazım. Çalışma anında DataGrid’in hücreleri arasında dolaşıldığı zaman CurrentCellChange olayı meydana gelir. Bu olaydan yararlanarak kullanıcının üzerine gittiği hücrenin içeriğini forma yerleştireceğim TextBox’a aktaracağım. Bu amaçla DataGrid’in CurrentCellChange olayını temsil eden metodu aşağıdaki gibi düzenledim. 

private void dataGrid1_CurrentCellChanged(object sender, EventArgs e) 
 
    int Satir, Sutun; 
    Satir = dataGrid1.CurrentCell.RowNumber; 
    Sutun = dataGrid1.CurrentCell.ColumnNumber; 
    textBox1.Text = dataGrid1[Satir, Sutun].ToString(); 
 }

Bu metottaki 3 satırı incelersen DataGrid’in aktif hücrenin satır nosunun CurrentCell nesnesinin RowNumber özelliğinde ve aktif hücrenin sütun nosu ise ColumnNumber özelliğinde saklandığını görürsün. DataGrid’in hücreleri arasında dolaştıkça bu özelliklerin içerik­leri kendiliğinden güncellenmektedir. 

Şimdi ise DataGrid’in altına 5 adet ListBox yerleştirip DataGrid’de içeriği görüntülenen Datatable’ın ilk 5 alanın içeriğini bu ListBox’lara aktaracağım. DataGrid’deki ilk 5 sütun veya alan için formun alt kısmına 5 adet ListBox yerleştirdikten sonra aşağıda verdiğim kodu hazırladım.

private void Form1_Click(object sender, EventArgs e) 
 
   int sayi = dataSet11.Tables[0].Rows.Count; 
   for (int i = 0; sayi >i; i++) 
   
       listBox1.Items.Add(dataGrid1[i,0].ToString()); 
       listBox2.Items.Add(dataGrid1[i,1].ToString()); 
       listBox3.Items.Add(dataGrid1[i,2].ToString()); 
       listBox4.Items.Add(dataGrid1[i,3].ToString()); 
       listBox5.Items.Add(dataGrid1[i,4].ToString()); 
    


Bu şekilde DataGrid’in satırlarına ulaştıktan sonra sıra C# uygulaması dahilinde Excel’i başlatmaya gelir. Bu işlem için öncelikle Add Reference diyalog kutusunu ekrana getirerek Com sekmesinde Microsoft Office 11 Library ve .NET sekmesinde ise Microsoft.Office.Interop.Excel referanslarını projeye dahil etmen gerekiyor.

Projeye dahil edilen bu Library veya referanslar Solution Explorer penceresinde görünür. Add Reference diyalog kutusunda bu referansı projeye dahil ettikten sonra kod dosyasına ilgili namespace’lerdeki Class’lardan yararlanılmak istendiği using deyimi ile belirtilir.

using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel; 

Bu hazırlıktan sonra üzerinde çalıştığım projenin formuna bir düğme yerleştirdim ve düğme­nin Click olayını temsil eden metodunu aşağıdaki gibi düzenledim. Bu kod sayesinde Excel çalıştırılır.

private void Excel_penceresi_Click(object sender, EventArgs e) 
 
   Microsoft.Office.Interop.Excel.Application Excel_uygulamasi; 
   Excel_uygulamasi = new Microsoft.Office.Interop.Excel.Application(); 
   Excel_uygulamasi.Visible = true;   
 

Excel.Application tipindeki nesneye “Excel_uygulamasi” adını vermek benim için suç teşkil ettiği(!) için bu nesneye “lotus_uygulamasi” adını verdim. Aşağıda verilen kodu kendi şartlarına göre düzenlersen sorununu çözebilirsin. 

private void Excel_penceresi_Click(object sender, EventArgs e) 
 
    Microsoft.Office.Interop.Excel.Application lotus_uygulamasi; 
    lotus_uygulamasi = new Microsoft.Office.Interop.Excel.Application(); 
    lotus_uygulamasi.Visible = true;   
    object sablon=true; 
    lotus_uygulamasi.Workbooks.Add(sablon); 
    Microsoft.Office.Interop.Excel.Worksheet Aktif_tablo; 
    Aktif_tablo = (Worksheet)lotus_uygulamasi.ActiveSheet; 
    Aktif_tablo.Cells[2, 2] = "Fenerbahçe"
    Aktif_tablo.Cells[3, 2] = "Beşiktaş";
    Aktif_tablo.Cells[4, 2] = "Galatasaray";
}

Forumlardaki Sorular 31.05.2009 05:31:00

YORUM YOK


YorumlarYorum Yaz
Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS | İletişim
Memik Yanık 2004-2009 © Tüm Hakları Saklıdır.
Hazırlayan www.semgoksu.com