C# ile Excel Dosyasındaki Verileri Çekme

Bu dersimizde C# ile Excel dosyasındaki verileri projemize çekmeyi öğreneceğiz. İnternet de bununla ilgili pek bilgi olmadığı için böyle bir makale yazmaya karar verdim. Access veya SQL Server’den veri çekerken kullandığımız kod yapısına tıpa tıp benziyor. Tabi birkaç dikkat etmemiz gerek hususlar var. Umarım bu ders yararlı olur 🙂

Excel’de ki verileri çekme için yine OleDbConnection sınıfını kullanacağımız için projemize aşağıdaki oledb sınıfı referansını ekliyoruz.

using System.Data.OleDb;

Excel dosyamızla bağlantı kurmak için aşağıdaki kodları “InitializeComponent” parentezlerinden sonra yazıyoruz.

OleDbConnection xlsxbaglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=excel_dosya.xlsx; Extended Properties='Excel 12.0 Xml;HDR=YES'"); //excel_dosya.xlsx kısmını kendi excel dosyanızın adıyla değiştirin.
DataTable tablo = new DataTable(); //Verileri direkt datagrid'e çekmek için DataTable kodunu tanımlıyoruz.
        

Aşağıdaki kodlarla verileri datagrid’de listeliyoruz.

xlsxbaglanti.Open(); //Excel dosyamızığın bağlantısını açıyoruz.
tablo.Clear(); //En üstte tanımladığımız Datatable değişkenini temizliyoruz.
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [YeniSayfa$]", xlsxbaglanti); //OleDbDataAdapter ile excel dosyamızdaki verileri listeliyoruz. Burada önemli olan kısım sorgu cümleciğinde ki YeniSayfa$ kısmı yerine excel dosyasındaki ismi yazmanız gerek. Bu isim excel dosyanızı açtığınızda en altta yazan isimdir. Eğer değiştirmediyseniz zaten Sayfa1 olarak yazar. Ayrıca " $ " simgesi ve köşeli parentezleri ellememeniz gerek.
da.Fill(tablo); //Gelen sonuçları datatable'a gönderiyoruz.
dataGridView1.DataSource = tablo; //datatable'da ki verileri datagrid'de listeliyoruz.
xlsxbaglanti.Close(); //Bağlantıyı kapatıyoruz.

Aşağıdaki kod yapısı yukarıdaki kod yapısından biraz değişik. Yukarıda OleDbDataAdapter kullandık burada OleDbCommand kullandık. Buradaki kodlarla ise verileri tek tek MessageBox’da gösteriyoruz.

int kayitsay = 0; //Toplam kaç kayıt çektiğimizi anlamak için kayitsay adında bir değişken tanımlıyoruz.
xlsxbaglanti.Open(); //Excel dosyamızın bağlantısını açıyoruz.
OleDbCommand komut = new OleDbCommand("SELECT * FROM [YeniSayfa$]", xlsxbaglanti); //OleDbCommand ile excel dosyamızdaki verileri listeliyoruz. Burada önemli olan kısım sorgu cümleciğinde ki YeniSayfa$ kısmı yerine excel dosyasındaki ismi yazmanız gerek. Bu isim excel dosyanızı açtığınızda en altta yazan isimdir. Eğer değiştirmediyseniz zaten Sayfa1 olarak yazar. Ayrıca " $ " simgesi ve köşeli parentezleri ellememeniz gerek.
OleDbDataReader oku = komut.ExecuteReader(); //OleDbCommand ile gelen verileri tek tek okumak için OleDbDataReader sınıfındaki oku değişkenine atıyoruz. Ve...
 while (oku.Read()) //... Ardından verileri döngüye alıyoruz.
  {
   //Excel de ilk satırdaki alanlar başlık olarak kabul edilir. Bu bilgiye göre aşağıdaki kodlarımızı yazıyoruz. Yani ilk satırda AdSoyad,Cinsiyet ve Yas kısımları var. Bunların altında da bilgiler var. Biz bu başlıkların altındaki bilgileri çekiyoruz.
   string adSoyad = oku["AdSoyad"].ToString();
   string Cinsiyet = oku["Cinsiyet"].ToString();
   string Yas = oku["Yas"].ToString();
   kayitsay++; //Her döngüde sayacımız bir artıyoruz.
   //Environment.NewLine kodu bir alt satıra geçmek için kullanılmaktadır.
   MessageBox.Show("Ad Soyad : " + adSoyad + Environment.NewLine + "Cinsiyet : " + Cinsiyet + Environment.NewLine + "Yaş : " + Yas); //Her döngüde dönen verileri listeliyoruz.
  }
xlsxbaglanti.Close(); //Bağlantıyı kapatıyoruz.
MessageBox.Show("Toplam " + kayitsay + " Tane Kayıt Başarı ile Excelden Alındı", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information); //Kaç adet veri döndüğünü listeliyoruz.
kayitsay = 0; //Sayacı sıfırlıyoruz.
C#
C# ile Excel'de ki Verileri Çekme
İndirilme : 1984 | Dosya Tipi : rar

33 yorum

  1. ben Yanıtla

    Benim excel dosyasının uzantısı csv sizin kullandığınız şekilde yaptığımda bu hatayı alıyorum uzantıdan kaynaklımı acaba değilse neyden olabilir ?

    Dış tablo, beklenen biçimde değil.

  2. metin Yanıtla

    network uzerindeki baska bir pcde bulunan excel dosyasindan nasil veri alabiliriz.

    OleDbConnection baglanti = new OleDbConnection(@”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\10.140.56.209\c$\FockeDCS\Shift.1\D409_021216_A1.XLS;User ID=[Fockeadmin];Password=[!Gemini]; Extended Properties=’Excel 12.0 xml;HDR=YES;'”);
    baglanti.Open();

    burdaki hata nedir

  3. Selin Yanıtla

    Merhaba bende
    OleDbConnection xlsbaglanti = new OleDbConnection(@”Prodiver=Microsoft.ACE.OleDB.14.0; Data Source=AES_KARBON.xls; Extended Properties = ‘Excel 14.0 Xml; HDR=YES'”);
    bu kısın çalışmıyor ne yapmam gerek.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir