Bu makalede Microsoft Office ailesinin bir ürünü olan Excel’de
hazırlanmış .xls dosyalarında belirli bir şekilde tanımlanmış olan
bilgilere ADO .NET nesneleri ile nasıl ulaşacağımız konusuna
değineceğim. .xls dosyasından aldığımız ve görüntülediğimiz bilgileri
daha sonra örnek bir kod ile MS SQL Server veritabanına yazdıracağız.
Bildiğimiz gibi MS Excel programı verileri saklamamızı ve bu veriler
üzerinde işlemler yapabilmemizi sağlamaktadır. Peki bu verilere .NET
ortamında nasıl ulaşabiliriz? Bu aşamaya geçmeden, öncelikle bu işlemi
yapabilmemiz için Excel’de dosyamızı ne şekilde hazırlamamız gerektiğini
anlatacağım.
Hazırlayacağım örnekte bir sınıftaki öğrencilerin isimlerinin ve 3
tane sınav notlarının bilgilerini Excel dosyamızda tutalım. Açtığımız
Excel dosyasında 4 adet sütunumuz olsun. “AdSoyad”, “Sinav1”, “Sinav2”
ve “Final” sütunları. Daha sonra bu sütunların altlarını gerekli
bilgilerle dolduralım.
Bilgilerin olduğu alanı seçerek bu alana bir ad veriyoruz, böylece
seçili alanımız tanımlı bir hale geliyor. Bunun için Ekle > Ad > Tanımla
menüsünü seçiyoruz ve buradan bu alana vereceğimiz ismi yazıp (Bu
uygulamada ben NotTablosu adını verdim) önce “Ekle” diyor ve daha sonra
eklenen bu isim seçili iken “Tamam” diyoruz.
Artık Excel dosyası ADO .NET tarafından kullanılabilecek formattadır.
Bu haliyle Excel dosyasını bir Access veritabanı dosyası gibi
düşünebiliriz. Burada; NotTablosu tablo adı, AdSoyad, Sınav1, Sınav2 ve
Final ise alan adlarıdır. Dosyayı Notlar_1.xls olarak kaydedelim ve
dosyayı kapatalım. (Zaten dosya açıkken uygulamamızı çalıştırırsak hata
verecektir.)
Burada dikkat etmemiz gereken önemli bir nokta var. İlk satırımızda
yer alan AdSoyad, Sinav1, Sinav2 ve Final bilgileri alan adı olarak
algılanacaktır ve veritabanına eklemeye çalıştığımızda ilk satırımızdaki
bu bilgiler alınmayacaktır. Dosyadaki bilgileri SQL komutuyla
filtreleyerek, istediğimiz satırları ve bilgileri çekebileceğiz. Örnek
olarak “SELECT * FROM NotTablosu WHERE Final=80” şeklindeki bir komut,
bize bu tabloda Final notunun 80’e eşit olduğu satırları getirecektir.
Şimdi sıra geldi ADO .NET ile Excel dosyamıza bağlanmaya ve verileri
almaya. Bunun için bir uygulama oluşturuyoruz. Ben örnek olarak bir ASP
.NET Web Uygulaması oluşturuyorum. Uygulamamızdaki WebFrom1.aspx
dosyasına bir buton ve 1 datagrid nesnesi ekliyorum. Butona tıkladığımda
Excel dosyasındaki veriler alınarak datagride yüklenecek. Uygulamanın
kodlarına gelince; öncelikle veritabanı ile ilgili işlemler için System.Data.OleDb
(Excel dosyasına bağlanmamız için gerekli)
ve System.Data.SqlClient isim alanlarını uygulama kodlarının
başlangıcına ekleyip butonun Click Event’ ine aşağıdaki kodları
yazıyoruz.
'
Dosyaya bağlanmak için gerekli olan bağlantı stringini
Dim ConnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & Server.MapPath("Notlar_1.xls") & ";" & "Extended
Properties=Excel 8.0;"
Dim Conn As New OleDbConnection(ConnStr)
Conn.Open()
Dim MyCommand As New OleDbCommand("SELECT * FROM NotTablosu",
Conn)
Dim da As New OleDbDataAdapter
da.SelectCommand = MyCommand
da.Fill(dt)
' Verileri daha sonra da kullanabilmek için session
içerisinde tutuyoruz
Session("Veriler") = dt
' Verinin görüntüleneceği DataGrid in DataTable a
bağlanması ve verinin yüklenmesi
DataGrid1.DataSource = dt.DefaultView
DataGrid1.DataBind()
Label1.Text = "Excel dosyasından veri alındı"
Conn.Close() |
|