C# Windows Form WPF

C# ile Excel Dosyası Okuma

Aşağıdaki programda C# kullanarak COM ile Excel dosyasını açmayı ve belirtilmiş aralıktaki hücreleri okuyacağız.

Excel ile çalışabilmek için  Microsoft Excel 15.0 Object Library referans kütüphanesi yüklenmelidir. Önceli makalelerden bu referansı nasıl yükleneceğini inceleyebilirsiniz.

C# ile Excel Dosyası Oluşturma

Excelde istediğimiz aralığı nasıl belirtebiliriz.

Excel sayfasında istediğimiz özel bir hücreyi seçmek istersek yazmamız gereken kod aşağıdaki gibidir.

 

Excel.Worksheet excelSayfa = workbook.ActiveSheet;

Excel.Range rng = (Excel.Range)excelSayfa.Cells[10, 10];

Belirlenmiş bir aralığı seçmek için de yazılacak kod örneği;

Çoklu hücre seçimi için de kodlarımız şu şekilde oluşacaktır.

Excel.Worksheet excelSayfa = workbook.ActiveSheet;

Excel.Range rng = (Excel.Range) excelSayfa.[excelSayfa.Cells[1, 1], excelSayfa.Cells[3,3]];

 

Peki Exceldeki belirtilmiş hücre aralığımız C# kısmında nasıl tanımlanacaktır.  Excelden C# tarafında kaç tane hücre alındığını öğrenmek için UsedRange özelliği ile alınan son hücrenin index bilgisi döndürülmüş olacaktır.

Excel.Range range ;

range = xlWorkSayfa.UsedRange;

range değişkeni içinde kullımakta olan index sayısı döndürülecektir.

 

Aşağıdaki kodları windows form yada wpf üzerinde bir butona bağlayarak çalıştırdığımızda belirttiğimiz bölümdeki excel dosyasından okuma yaparak bilgileri ekrana yazdıracaktır. Programın çalışması yorum satırları şeklinde açıklanmıştır.

Excel.Application xlUygulama;//uygulama değişkeni tanımlandı
Excel.Workbook xlKitap;//kitap değişkeni tanımlandı
Excel.Worksheet xlSayfa;//sayfa değişkeni tanımlandı
Excel.Range range;//aralık değişkeni tanımlandı

string str;
int satir = 0;
int sutun = 0;

xlUygulama = new Excel.Application();//excelin bir örneği oluşturuldu

//belirtilen yoldaki excel dosyası açıldı ve ilk sayfası okunmaya başlandı
xlKitap = xlUygulama.Workbooks.Open("d:\\yazilimbilisim.xls", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlSayfa = (Excel.Worksheet)xlKitap.Worksheets.get_Item(1);

//okunan sayfadaki son bölümün index değeri alındı.
//satır ve sütun olacak şekilde iki boyutlu bir yapı üzerinde hareket edilecektir.
range = xlSayfa.UsedRange;//alınacak aralık belirtilmediği için sayfa içindeki tüm alanları alacaktır.


//satır ve sütunlar üzerinde dönerek ekrana okuduğumuz bilgileri yazdırıyoruz.
for (satir = 1; satir <= range.Rows.Count; satir++)
{
for (sutun = 1; sutun <= range.Columns.Count; sutun++)
{
str = (string)(range.Cells[satir, sutun] as Excel.Range).Value2;
MessageBox.Show(str);
}
}

xlKitap.Close(true, null, null);
xlUygulama.Quit();

/*Ram üzeründen de excelin bağlantısını kaldırıyoruz.*/
 try
 {
 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlUygulama);
 xlUygulama = null;
 }
 catch (Exception ex)
 {
 xlUygulama = null;
 MessageBox.Show("Hata " + ex.ToString());
 }
 finally
 {
 GC.Collect();
 }


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

Not2: D diski üzerinde yazilimbilisim.xls dosyası olduğunu varsayılarak oluşturulmuştur. Sizde kendi xls dosyanızın yolunu belirtin.

 

 

Excelde 50 Puanın altındaki öğrencilerin sayıp ekrana kaç tane öğrencinin kaldığını yazdıran program

Uygulamayı çalıştırmak için resimdeki gibi excel dosyasını oluşturup yazilimbilisim.xls yerine kendi excel dosyanızı yazınız.

excel notu okuma

kalan ogrenci sayisi

Excel.Application xlUygulama;
Excel.Workbook xlKitap;
Excel.Worksheet xlSayfa;
Excel.Range range;
object misValue = System.Reflection.Missing.Value;
int satir=3;
int sutun=3;
int kalanSayisi = 0;

xlUygulama = new Excel.Application();


xlKitap = xlUygulama.Workbooks.Open("d:\\yazilimbilisim.xls", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlSayfa = (Excel.Worksheet)xlKitap.Worksheets.get_Item(1);


range = xlSayfa.UsedRange;


for (satir = 2; satir <= range.Rows.Count; satir++)
{

int ortalama = (int)(range.Cells[satir, sutun] as Excel.Range).Value2;
if (ortalama < 50) kalanSayisi++;
}

MessageBox.Show("Kalan Öğrenci Sayısı="+kalanSayisi.ToString());

xlKitap.Close(true, null, null);
xlUygulama.Quit();

Notu 50 Puanın altında olan öğrencilerin sayısını bulma örneğinin ikinci çözüm yolu

Excel.Application xlUygulama;
Excel.Workbook xlKitap;
Excel.Worksheet xlSayfa;
Excel.Range tumAralik,rng;
int kalanSayisi = 0;

xlUygulama = new Excel.Application();


xlKitap = xlUygulama.Workbooks.Open("d:\\yazilimbilisim.xls", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlSayfa = (Excel.Worksheet)xlKitap.Worksheets.get_Item(1);
tumAralik = xlSayfa.UsedRange;

Excel.Worksheet excelSheet = xlKitap.ActiveSheet;
rng = (Excel.Range)excelSheet.Range[excelSheet.Cells[2, 3],excelSheet.Cells[tumAralik.Rows.Count, 3]];

for (int satir = 1; satir <= rng.Rows.Count; satir++)
{

//rng ile artık bizi ilgilendiren satırlar geldiği için
//yapı artık bir sutün 20 satırdan oluşuyor
int ortalama = (int)(rng.Cells[satir, 1] as Excel.Range).Value2;
if (ortalama < 50) kalanSayisi++;
}

MessageBox.Show("Kalan Öğrenci Sayısı="+kalanSayisi.ToString());

xlKitap.Close(true, null, null);
xlUygulama.Quit();

Kaynak:

www.csharp-console-examples.com

Yorum Yap