Bu yazıda var olan bir excel dosyasını nasıl açıp okuyacağımızı inceleyeceğiz.
Excel dosyasını okuma işleminden önce Microsoft Excel 15.0 Object Kütüphanesini projeye bağlamalıyız. Bu işlem için daha önce yayımlanmış makaleden excel kütüphanesini nasıl bağlayacağınızı inceleyebilirsiniz.
Excel kütüphanemizi projeye dahil ettikten sonra wpf yada windows form ekranında örnek bir buton controlünün click olayına kodlarımızı ekliyoruz.
Excel uygulamasının bir örneğini oluşturuyoruz.
1 2 3 |
Excel.Application xlOrn = new Microsoft.Office.Interop.Excel.Application(); |
Bilgisayarımızda excel yüklü değilse programın devam etmesini dururması için aşağıdaki kodları yazıyoruz.
1 2 3 4 5 6 7 |
if (xlOrn == null) { MessageBox.Show("Excel yüklü değil!!"); return; } |
Exceldeki kitap ve sayfaya bağlanmak için kitap ve sayfa değişkenlerini oluşturuyoruz.
1 2 3 4 5 |
Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; |
Aşağıdaki kodlar belirtilen adresteki excel belgesine bağlanıp A1 hücresindeki bilgileri okuyup ekrana yazdırmak işlemini gerçekleştirmektedir.
1 2 3 4 5 6 |
xlWorkBook = xlOrn.Workbooks.Open("d:\\yazilimbilisim.xls", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); MessageBox.Show(xlWorkSheet.get_Range("A1", "A1").Value2.ToString()); |
Excel belgesini kapatıp excel bağlantısını boşaltıyoruz.
1 2 3 4 5 6 |
xlWorkBook.Close(true, misValue, misValue); xlOrn .Quit(); MessageBox.Show(" d:\\yazilimbilisim.xls konumundaki A1 hücresi okundu"); |
Kodlarımızı toparlayacak olursak;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Excel.Application xlOrn = new 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.Open("d:\\yazilimbilisim.xls", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); MessageBox.Show(xlWorkSheet.get_Range("A1", "A1").Value2.ToString()); xlWorkBook.Close(true, misValue, misValue); xlOrn.Quit(); MessageBox.Show("Excel belgesini bağlandı ve okudu"); |
Not1: Referanslara using Excel = Microsoft.Office.Interop.Excel; bildirimini yapmayı unutmayın
Not2: d://yazılımbilisim.xls konumunda dosyanın var olduğundan emin olun. Yoksa kendi belirlediğiniz bir dosya ile ismi değiştirmelisiniz.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
try { System.Runtime.InteropServices.Marshal.ReleaseComObject(xlProje); xlProje = null; } catch (Exception ex) { xlProje = null; MessageBox.Show("Hata " + ex.ToString()); } finally { GC.Collect(); } |
Konunun yazılalı çok olmuş ama şansımı denemek istedim öncelikle iyi çalışmalar.
“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.” bunu için yazdığınız kod bloğunda ki xlProje nedir? Bende hata veriyor.
Yazılım bilişimde daha yazdığım bir yazı için verdiğim isimdi. Biraz isim değişikliği yaparken bunu değiştirmeyi unutmuşum. xlOrn olması gerekiyor. Excel application örneğini kaldırmak için kullandım.
value 2 ne
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-value2-property-excel
Ondalıklı değer döndürmek istiyorsan value2 kullanmak gerekiyor.