C# Windows Form WPF

C# ile Excel Dosyası Oluşturma

Aşağıdaki kod örneği bize COM bağlantı noktası ile nasıl excel dosyası oluşturacağımızı göstermektedir. Kodları kullanmaya başlamadan önce bilgisayarınızda EXCEL programının yüklü olması gerektiğini bilmelisiniz.

 

Excel Kütüphanesi

Microsoft C# ile nesne modeline erişmek için Microsoft Excel 15.0 Object Kütüphanesini projeye bağlamalısınız. Bu işlem için aşağıdaki adımları gerçekleştiriniz.

Aşağıdaki resimde gösterildiği gibi referans kütüphanesini açınız.

resim1

COM sekmesinden Excel 15.0 Object Library seçip OK butonuna basınız.

resim2

 

Program tarafında Excel dosyasını nasıl oluşturacağımıza bakalım.

 

Ekrandaki butona tıkladığımızda excel dosyasını oluşturan basit bir örnekle başlayalım.

 

WPF ekranına Controllerden bir tane buton controlü  ekleyip click olayına kodlarımızı yazıyoruz.

Windows Form kullananlar içinde aynı adımlar geçerli olacaktır.

resim3

 

Öncelikle Excel uygulama nesnesini başlatmak zorundayız.

Excel.Application xlOrn = new Microsoft.Office.Interop.Excel.Application();

Yeni bir excel belgesi oluşturmadan önce Excel programının yüklü olup olmadığını kontrol edelim.

if (xlOrn == null)
{
MessageBox.Show("Excel yüklü değil!!");
return;
}

Yeni bir excel kitabı ve excel sayfası açmak için gerekli kodlarımızı yazıyoruz.

Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;

Açık olan excel sayfasının ilk satırına örnek bir yazı girmek için gerekli olan kodumuz.

xlWorkBook = xlOrn.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "Sayfa 1 Örnek Yazı";

Açık olan Excel belgemizi istediğimiz yere kaydedip, excel belgemizi kapatıyoruz.

xlWorkBook.SaveAs("d:\\yazilimbilisim.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlOrn.Quit();

 

Kodlarımızı toparlayacak olursa aşağıdaki şekilde belgemiz oluşturulmuş olacaktır.

Excel.Application xlOrn = new Microsoft.Office.Interop.Excel.Application();

if (xlOrn == null)
{
MessageBox.Show("Excel yüklü değil!!");
return;
}

Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;

xlWorkBook = xlOrn.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "Sayfa 1 Örnek Yazı";

xlWorkBook.SaveAs("d:\\yazilimbilisim.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlOrn.Quit();

MessageBox.Show("Excel dosyası d:\\yazilimbilisim.xls komununda oluşturuldu!");

 

NOT: using Excel = Microsoft.Office.Interop.Excel; eklemeyi unutmayın.

 

C# Excel Açma Örneği

 

 

 

Uygulamanın sonuna COM bağlantısını ram üzerinden de kaldırması için gerekli kodu yazmakta fayda var. Bilgisayar raminde fazladan excel açıp boş yere ram tüketmemek gerek.

bellek bosaltma

try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlProje);
xlProje = null;
}
catch (Exception ex)
{
xlProje = null;
MessageBox.Show("Hata " + ex.ToString());
}
finally
{
GC.Collect();
}

 

Yorum

  • Merhabalar aşağıdaki kodları eklediğim halde fazladan excel açık kalıyor. Nedendir acaba? yardımcı olabilir misiniz?
    try
    {
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlProje);
    xlProje = null;
    }
    catch (Exception ex)
    {
    xlProje = null;
    MessageBox.Show(“Hata ” + ex.ToString());
    }
    finally
    {
    GC.Collect();
    }

Yorum Yap