ADO.Net ile Excel tablolarına DB gibi baglanmak
Excel dosyalarına aynen bir DB gibi erişmek, ADO.Net ile kolayca mümkün oluyor. Pek bir alternatif olarak sayılmasada, çogu zaman ihtiyaç duyula
bilmektedir. ADO.Net ile bu işlemi gerçekleştirmek, 2 aşamada mümkün oluyor.
1. Her hangi bir Excel dosyasındaki belirledigimiz bir hücre grubunu ilk olarak tanımlamamız gerekiyor. ADO.Net bu tanımladıgımız alanlari sanki bir veri tablosu gibi
algılayacak. Benim örnek oluşturdugum tablo aşagıdaki gibidir
Tablomuzu oluşturduktan sonra, "Insert -> Names -> Define" ile üzerinde çalışacagımız tabloyu ve verilerini oluşturacagız.
"Define" kısmında gelen pencerede, ben "isimler" diye bir define tanımladim (yani tablomun adı "isimler"), "Add" tuşunana basmadan önce aşagıdaki "Refers to:" kısmına hangi hücreleri kapsadıgını seçmemiz gerekmektedir.
Tıpkı aşagıdaki gibi, ilgili alanı seçiyoruz.
A1 den B7 e kadarlık hücre blogunun hepsini "isimler" olarak tanımladık. Artık kaydedip cıkabiliriz.
2. Bu kısımda ise C# da erişim yolunu görecegiz;
İlk olarak
using
System.Data.OleDb; uzay ismini eklemeyi unutmuyoruz.
Ben aşagıdaki gibi oldukca basit bir form hazırladım, bir listview ve bir
buttondan oluşuyor.
private
void btn_XLSden_Click(object
sender, System.EventArgs e)
{
//connection stringimiz
//bin klasorumuzn icindeki derledigimiz
EXE ile aynı klasorun iceresinde
string connstr =
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=Deneme.XLS;Extended Properties="Excel 8.0;HDR=Yes;IMEX=2"";
// EXCEL dosyamızı açıyoruz ve okuyoruz
OleDbConnection conn = new
OleDbConnection(connstr);
conn.Open();
//isimler
tablosu aslında Excel dosyamızda define ile tanimladigimiz alanin ismi
OleDbCommand cmd = new
OleDbCommand("Select * From isimler",conn);
OleDbDataReader dtr = cmd.ExecuteReader();
//eger tablo bos degil ise
//kolon isimlerini alıp
listview in kolonlarını olusturuyoruz
for(int
i=0;i<=dtr.FieldCount-1;++i)
listview1.Columns.Add(dtr.GetName(i),65*(i+1),HorizontalAlignment.Center);
//tek tek okuyoruz ve listviewe ekliyoruz
ListViewItem satir = new
ListViewItem();
while(dtr.Read())
{
satir = listview1.Items.Add(dtr[0].ToString());
satir.SubItems.Add(dtr[1].ToString());
}
//sonlandırıyoruz
dtr.Close();
conn.Close();
}
Fazladan bir açıklama yapmaya gerek duymuyorum, gerekli
açıklamaları comment olararak kodlarla birlikte yaptım. Gördügünüz gibi oldukca
basit, diger işlemleride sıradan ADO.Net commandları ile
gerçekleştirebilirsiniz.
ConnectionString dogru yapıldıgı anda hiç bir sorunla
karşılaşmazsınız.
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Deneme.XLS;Extended
Properties="Excel 8.0;HDR=Yes;IMEX=2""
Buradaki "Deneme.XLS"in yeri farklı bir klasorde ise
c:\denemeler\deneme.XLS gibi
yerini gösterebilirsiniz. Hepinize çalışmalarınızda başarılar diliyorum, kolay
gelsin…
|
Yorumlar (0)
Geri İzlemeler (0)
Yorum yaz
Geri izleme
|