Geçenlerde şirkette yazdığım bir uygulama için bugüne kadar bir Excel tablosunda tutulan binlerce kaydı veritabanına aktarmam gerekti. Uygulama C# ile yazılmış bir ASP.NET uygulamasıydı ve daha önce C# ile hiç Excel'den veri okumamıştım. Internette (Google'da da diyebiliriz) yaptığım kısa bir araştırmadan sonra bu aktarım işini en basit şekilde OleDb kullanıp veriyi SQL'den çeker gibi çekerek halledebileceğimi düşündüm. Ve haksız da çıkmadım...
Verinin Excel dosyasında düzenli bir şekilde tutulmuş olduğunu kabul edersek, yapacağımız iş oldukça basit. İşte gerekli olan kod:
SqlConnection con = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; " + "data source=C:\\Dosya.XLS;Extended Properties=Excel 8.0;");
SqlCommand command = new OleDbDataAdapter("select * from [Sheet1$]", con);
con.Open();
DataSet ds = new DataSet();
command.Fill(ds);
Bu kod sayesinde Dosya.XLS adlı dosyada bulunan her satır veriyi ds adlı DataSet instance'ımız içerisine atmış oluyoruz. Bu veriyi satır satır okumak için ise gene çok basit bir işlem yapacağız:
ds.Tables[0].Rows[0].ItemArray[1].ToString()
Yukarıdaki değer bize Excel doyasındaki ilk kaydın ilk hücresinin değerini verecek. Bir döngü içerisine koyarak tüm satırlardaki tüm hücrelerin değerlerine kokaylıkla ulaşabiliriz.
4 Comments:
At 2:05 ÖS, Unknown said…
Bu yorum yazar tarafından silindi.
At 2:06 ÖS, Unknown said…
Hata veriyor yazdığın kod a.q kalkmış bide burda yayınlıyon yaa
At 1:54 ÖÖ, Adsız said…
Eyüpmüsün nesin ne dangalak adamsın, sen programcımısın, soytarımısın. Sizin gibi insanlar yüzünden millet gına getirdi.
Bu tarz siteler porno film yayınlanan forumlara benzemez. Eğer iki satır kodu kendine göre özelleştiremiyorsan laf atma insanların emeğine. Gerizekalı.
At 4:37 ÖÖ, Me Te said…
Kodun sadece adapter kısmında sıkıntı var, aynı instance oluşturursanız, yani sqlcommand olan kısmı sqladapter olarak değiştirirseniz sıkıntı biter.
Gayet güzel çalışıyor, eline sağlık.
Bende takıldığım noktayı sorayım, hücre içinde trim şeklinde arama yaptığımda bulamıyor, aramayı nasıl yapabiliriz, büyük küçük harf duyarlılığı olmadan,boşlukları yoksayarak.
Yorum Gönder
<< Home