Makale Özeti

Klasik yöntemlerle excelden veri okumak ve yazmak ugrastirici olablmektedir ama Ado.Net’e hakimseniz bir iki ufak noktaya dikkat ederek, Ado.Net ile Excel’de veri okuma, veri ekleme ve güncelleme çok kolay hale gelmektedir.

Makale

Excel ve Ado.Net
 
Bu yazimda Ado.Net ile Excel’i aynen veritabani gibi kullanip veri getirme yöntemine deginecegiz.
 
Klasik yöntemlerle excelden veri okumak ve yazmak ugrastirici olablmektedir ama Ado.Net’e hakimseniz bir iki ufak noktaya dikkat ederek, Ado.Net ile Excel’de veri okuma, veri ekleme ve güncelleme çok kolay hale gelmektedir.
 
Simdi ise koyulalim.
 
1.Adim: Bir adet Visual Studio Projesi olusturunuz.
 
2.Adim: Bir adet Excel Dökümani olusturun ve adini deneme.xls (deneme.xlsx) birakin. Bu excel dosyasini Visual Studio projenizin debug klasörünün içerisine birakiniz.
 
3.Adim: Form1’e 1 adet DataGridView, 3 adet Button ekleyiniz.
 
4.Adim: Projenizde Project/Add Class ile bir adet class olusturunuz. Ben ismini Class1 olarak biraktim.
 
5.Adim: Class1.cs sayfasini açiniz ve içerisine asagidaki kodlari ekleyiniz.
 
Eger Excel 2007 kullaniyorsaniz connection stringi asagidaki biçimde düzeltiniz.
OleDbConnection baglanti = new OleDbConnection("Data Source=deneme.xlsx;Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0");
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb; //Sizde Ekleyiniz.
using System.Data; //Sizde Ekleyiniz.
 
namespace WindowsFormsApplication9
{
    class Class1
    {
 
        OleDbConnection baglanti = new OleDbConnection("Data Source=deneme.xls;Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0");
        OleDbCommand komut;
 
        public DataTable ExcelVerileriniGetir() //Veri Okuma
        {
            komut = new OleDbCommand("select * from [Sayfa1$]",baglanti);
            if (baglanti.State == ConnectionState.Closed)
            {
                baglanti.Open();
            }
            OleDbDataReader oku = komut.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(oku);
            return dt;
        }
 
        public void KayitYap(string adi,string soyadi) //Yeni Kayit Ekleme
        {
            komut = new OleDbCommand("insert into [Sayfa1$] values (@adi,@soyadi)", baglanti);
            komut.Parameters.Add("@deger1",OleDbType.VarChar,50).Value=adi;
            komut.Parameters.Add("@deger2", OleDbType.VarChar, 50).Value = soyadi;
            if (baglanti.State == ConnectionState.Closed)
            {
                baglanti.Open();
            }
            komut.ExecuteNonQuery();
        }
 
        public void KayitGuncelle(string DegisecekAd,string DegistirilecekAd) //Kayit Güncelleme
        {
            komut = new OleDbCommand("update [Sayfa1$] set ADI=@DegisecekAd where ADI=@DegistirilecekAd", baglanti);
            komut.Parameters.Add("@DegisecekAd", OleDbType.VarChar, 50).Value = DegisecekAd;
            komut.Parameters.Add("@DegistirilecekAd", OleDbType.VarChar, 50).Value = DegistirilecekAd;
            if (baglanti.State == ConnectionState.Closed)
            {
                baglanti.Open();
            }
            komut.ExecuteNonQuery();
        }
 
    }
}
 
Burada tüm kullanim normal veri tabanlarina benzemektedir. Dikkat etmeniz gereken nokta yani normal veritabanlarindan farklilik gösteren noktalar;
 
  • Connection String de ki Extended Properties özelligi,
  • OledbCommand nesnesindeki sql komutunda excel sayfalarinin “[]” içerisine konulup sayfa isminin sonuna “$” isareti getirilmesidir. Bizde [Sayfa1$] seklinde olduguna dikkat ediniz.
Simdi formunuza gelerek her bir butonun Click Eventine;  
       
        Class1 yeni = new Class1(); //Class1 den yavru degisken türetildi.
       
        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = yeni.ExcelVerileriniGetir();
            //Veriler DatagridView’e aktarildi.
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            yeni.KayitYap("Gülser","Demirog");
            //Yeni Kayit ekleniyor.
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            yeni.KayitGuncelle("Gözde","Nafiye");
            //Kayit Güncceleme islemi,Nafiye isimleri Gözde oldu.
        }
 
Diger yazilarimda görüsmek üzere.
 
Engin Demiroğ
MCSE-MCSD.NET
engin@e-learner.net