C# Excel’den Veri Okuma

Posted on


excell

 

Merhaba arkadaşlar, Microsoft Teknolojileri kategorimdeki yeni yazımı yazmaktayım. Bu yazımda sizlere Excel’den veri okuma işlemini anlatacağım. Güzel açıklamalarından dolayı ve bu konuda beni aydınlattığı için Mehmet AKBULUT bey’e teşekkürlerimi sunuyorum. http://www.mehmetakbulut.net/2011/08/c-ile-excelden-veri-okuma.html

İşlerin nasıl yürüyeceğine gelecek olursak; access veritabanı kullanımındakiyle aynı mantıkla hareket edeceğiz. Tablolarımız excel dosyası içerisindeki sayfalar olacak. Tabloların içerisinde A,B,C… gibi sütunlar ise bizim veri alanlarımız olacaktır.

Form aşağıdaki gibidir. Excel Dosyasını Seçiniz butonu ile ilişkilendirdiğim OpenFileDialog aracılığıyla Excell dosyasının yerini belirtiyoruz bu bizim dosya yolumuz oluyor. İşin özüne (kodlara ) gelecek olursak;

excelekran1

openFileDialog1.ShowDialog();
string dosyayolu = openFileDialog1.FileName;
OleDbConnection bag = new OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0; Data Source=”+dosyayolu+”; Extended Properties=Excel 12.0″);
bag.Open();
string komut=”Select * from [YoneticiIsTakibi$]“;
OleDbCommand cmd=new OleDbCommand(komut,bag);
OleDbDataAdapter da = new OleDbDataAdapter(komut,bag);
OleDbDataReader dr=cmd.ExecuteReader();
DataTable dt = new DataTable();
da.Fill(dt);
while (dr.Read())
{
lbldeneme.Text = dr["F3"].ToString();
}
excelldatagrid.DataSource = dt;

Yukarıda While döngüsü içerisinde de label içerisine excel içindeki F3 sütununa ait en sonda bulunan veriyi yazdırdım. Siz bu döngü içerisine sql server için bir ekleme fonksiyonu yazıp bu datareader’ı sql sorgusu içine gömerseniz, kodunuz sql server içerisine doğrudan yazma işlemini gerçekleştirecektir. Bundan farklı olarak benim yapacağım şekilde de yapabilirsiniz. Şöyle ki, excel butonu ile verileri datagrid’e alıp daha sonra başka bir buton vasıtasıyla datatable içerisindeki verilerin alanlara göre seçilip veritabanına kopyalanmasını sağlayabilirsiniz. Yapabilecekleriniz yanlızca beyniniz ve hayal gücünüzle sınırlı. Şuna dikkat etmeyi unutmayın, her excel dosyası stabil (tekdüze) değil. Boş olan satırları da veritabanına kaydetmenizin anlamı yok. Gerekli kontrolleri yaptıktan sonra veritabanına kayıt yapmanızı tavsiye ederim.

About these ads

9 thoughts on “C# Excel’den Veri Okuma

    oktay said:
    27 Temmuz 2013, 14:24

    selam;

    {
    lbldeneme.Text = dr["F3"].ToString();
    }

    bölümünde system.indexoutofrangeexception hatası veriyor.

    eğer bu kodu kullanmazsak veriler datagridview e geliyor.

    açıkçası çok ta gerekli birşey benim için, bir excel hücresindeki veriyi bir lable a yazdırmam gerek, yardımlarınızı rica ederim…

    tşk…

    burak said:
    09 Eylül 2013, 20:48

    The ‘Microsoft.ACE.OLEDB.12.0′ provider is not registered on the local machine. hatası alıyorum projeyi run edince. neden acaba?

      erencol responded:
      09 Eylül 2013, 21:38

      Access versiyonunuz 2007 olmalıdır. 2007 ise de Ofis kurulumunu yaparken eksik kurulum yapmanızdan kaynaklanıyor olabilir.

        burak said:
        09 Eylül 2013, 23:24

        Access kullanmıyorum. Sadece Excel’den C# ile veri çekmeye çalışıyorum. Bu halde neden bu hatayı alıyorum?

        erencol responded:
        10 Eylül 2013, 10:43

        Pardon excel diyecektim. Excel’im hangi sürümünü kullanıyorsunuz? 2007 ise eksik kurulum yapmış olmanız muhtemeldir. Microsoft Ofis’i kaldırıp tüm seçenekler ile yeniden kurulum yapmanızı tavsiye ederim.

        burak said:
        10 Eylül 2013, 11:00

        Iki bilgisayar var. Birinde excel 2012 digerinde de 2010 kurulu.

        erencol responded:
        10 Eylül 2013, 15:53

        O halde bağlantı cümlesi OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0; içerisinde bir hata var. Yukarıdaki bağlantı cümlesi 2007 içindir. 2010 ve 2012 için farklılık gösterebilir. Araştırıp doğru bağlantı cümlelerini girmeniz halinde çalışacaktır.

    erencol responded:
    10 Eylül 2013, 10:37

    Pardon excel diyecektim. Ofis kurulumunu yaparken eksik kurulum yapmış olabilirsiniz. Ofis’i kaldırıp tekrar kurulum yapın. Tüm paketleri de yükleyin.

    erencol responded:
    10 Eylül 2013, 10:41

    Pardon excel diyecektim. Kurulumu eksik yapmışsınızdır. Ofisi kaldırıp tüm seçenekleri ile yeniden kurun.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s