Kurumsal Otomasyon Çözümlerinde Zirve

Excel ve Ado.Net

Excel ve Ado.Net

Bu yazımda Ado.Net ile Excel’i aynen veritabanı gibi kullanıp veri getirme yöntemine değineceğiz.

Klasik yöntemlerle excelden veri okumak ve yazmak uğraştırıcı 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.

Şimdi işe koyulalım.
1.Adım: Bir adet Visual Studio Projesi oluşturunuz.

2.Adım: Bir adet Excel Dökümanı oluşturun ve adını deneme.xls (deneme.xlsx) bırakın. Bu excel dosyasını Visual Studio projenizin debug klasörünün içerisine bırakınız.

3.Adım: Form1’e 1 adet DataGridView, 3 adet Button ekleyiniz.

4.Adım: Projenizde Project/Add Class ile bir adet class oluşturunuz. Ben ismini Class1 olarak bıraktım.

5.Adım: Class1.cs sayfasını açınız ve içerisine aşağıdaki kodları ekleyiniz.

Eğer Excel 2007 kullanıyorsanız connection stringi

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 Kayıt 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) //Kayıt 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 kullanım normal veri tabanlarına benzemektedir. Dikkat etmeniz gereken nokta yani normal veritabanlarından farklılık gösteren noktalar

· Connection String de ki Extended Properties özelliği,

· OledbCommand nesnesindeki sql komutunda excel sayfalarının “[]” içerisine konulup sayfa isminin sonuna “$” işareti getirilmesidir. Bizde [Sayfa1$] şeklinde olduğuna dikkat ediniz.

Şimdi formunuza gelerek her bir butonun Click Eventine;

Class1 yeni = new Class1();
//Class1 den yavru değişken türetildi.
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = yeni.ExcelVerileriniGetir();
//Veriler DatagridView’e aktarıldı.
}

private void button2_Click(object sender, EventArgs e)
{
yeni.KayitYap(“Gülser”,”Demiroğ”);
//Yeni Kayıt ekleniyor.
}

private void button3_Click(object sender, EventArgs e)
{
yeni.KayitGuncelle(“Gözde”,”Nafiye”);
//Kayıt Güncceleme işlemi,Nafiye isimleri Gözde oldu.
}

Yorum Yapılmamış

Bir cevap yazın