Mar
17

Asp.Net’de excel’den veri almak

Son yaptığım bir projemde benden excel dosyasından verileri alıp veritabanına kaydetmemi istemişlerdi 🙂 Tabi google’dan ilgili araştırmalarımı yaptıktan sonra gene hazır kod bulamadım (Bendeki şans zaten 🙂 ) Ufak tefek neyi nası yapabileceğim hakkında yazılar vardı. Ordan yola çıkarak kendi classımı yazdım (ExcelProcess.cs) .

Yaptığım çalışmada excel dosyasından verileri alıp tablo içine bastırdım.

excel

Kullanicilar.xls adlı dosyadan yukarıdaki gibi verileri aldım.

Kod kısmıyla alakalı bazı şeyleri açıklamak gerekirse eğer ;

ExcelProcess ExcelProcess1 = new ExcelProcess();
ExcelProcess1.retrieveHeader(Server.MapPath(this.TBexcelname.Text), 1);
ExcelProcess1.retrieveRow(Server.MapPath(this.TBexcelname.Text), 1);

Yukarıdaki kodda ExcelProcess adlı classımda bulunan 2 tane fonksiyon bulunmaktadır. Bunlardan “retrieveHeader()” adlı fonksiyonum excel dosyasında başlık alanlarını getirmektedir. Aldığı ilk parametre excel dosyasının yeri ikincisi ise, excel dosyasının kaçıncı sayfasındaki veriyi almak istediğimizi yazıyoruz.

Birazcık ExcelProcess.cs dosyasına bakmak gerekirse ;


public ExcelProcess()
{
//this.connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0";
this.connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;";
}

ExcelProcess adlı classı yarattığımızda (çağırdığımızda)  ilk connetionstring yapısını alıyorum. Yukarıdaki koda dikkat ederseniz bir tane stringi commentledim. Benim şu an kullandığım connstring .xlsx (Windows Office 2007) haricindeki diğer excel dosyalarından rahatlıkla veri alabilirsiniz. Ama siz “.xlsx” dosyasından da veri almak istiyorsanız commentlemiş olduğum connstringi kullanmak zorundasınız. Tabi bunda da bazı ayarlar yapmamız gerekmektedir 🙂 .

İlk önce kullanacağınız bilgisayarda Microsoft Office 2007′ nin kurulu olması gerekmektedir.  Yoksa “.docx” uzantılıyı bilgisayarınız desteklemdiğinden patlayacaktır 🙂 Ben şu an office 2007′ nin var olduğunu sayıyorum. Şimdi yapacağımız olay projemize “Microsoft Excel 12.0 Object Library” kütüphanesini referans olarak eklememiz gerekmektedir.

Eğer Projeye referans eklemeyi bilmiyorsanız,  aşağıdaki linkteki yazıyı okuyarak öğrenebilirsiniz ;

.Net projelerine Referans (Reference) eklemek

Yurıda anlattığım yazıda ben .Net kütüphanesini kullanıyordum ama burada COM sekmesinde bulunan kütüphaneyi kullanacağım.

excel_reference

Aslında bundan sonra diyebileceğim fazla bişi yok malesef . ‘ tane fonksiyon hemen hemen aynı işi yapmaktadır. Tek fark birisi başlıkları alırken diğeri satırları getirmektedir. 🙂 Bide bu iki fonksiyon string döndürmektedirler.

Gönül rahatlığı içinde yazmış olduğum classı istediğiniz projede kullanabilirsiniz 🙂

ExcelProcess adlı örnek projeyi indirmek için tıklayınız.

11 yorum bulunmaktadır - “Asp.Net’de excel’den veri almak”

  • derkan 05 Nisan 2009, 17:17

    çok teşekkürler.

  • bloger 18 Ocak 2010, 21:34

    Allah razı olsun arkadaşım. o kadar aradım bulamamıştım.

  • Enes Pekkaya 18 Ocak 2010, 21:36

    iyi çalışmalar 🙂

  • ferhat 06 Mayıs 2010, 13:12

    .Net Projesi Olarak Yapcagim

    Hocam Merhaba Exceldem Veri cekme örneginizi okudum ancak tam olarak yapmak ıstedımgı yapamadım bu konuda bana yardımcı olurmusunuz ? Benim Yapmak istedim olay söle excelde db deki gibi tablo oluturduktan sonra bunu file uploadla projeye dahil etmek istyrm ve dahil ettikten sonra dahil ettigim excel dosyamı bir girdview de gostermek istyrm bunu nasıl yapa bilirm kısaca acıklarmısınız hocam

    İyi Calışmlar..

  • Enes Pekkaya 06 Mayıs 2010, 14:29

    Eğer bizim yayınlamak istediğimiz excellerin hepsi aynı formatta ise bunları veritabanına kaydettirip kullanıcılara göstertmek en mantıklısı olur.

    for (int count = 0; count < excelDataSet.Tables[0].Columns.Count; count++)
    {
    StringBuilder1.Append(string.Format("{0}”, DataRow1[count].ToString()));
    }
    StringBuilder1.Append(“”);

    Yukaridaki kodda DataRow1[count].ToString() den değerleri alıp veritabanına kaydetebilirsin.

    İyi çalışmalar…

  • ferhat 07 Mayıs 2010, 14:29

    Hocam Bu kontrol Buton click eventinde nasıl yapmalıyım bu konuda ufak bır bilgi veririmisiniz ?
    StringBuilder1.Append(string.Format(“{0}”, DataRow1[count].ToString()));

  • Enes Pekkaya 08 Mayıs 2010, 21:59

    App_code un içinde ExcelProcess.cs dosyası bulunmaktadır. Zaten excel ile alakalı işleri burada yapmaktayım ( Exceldeki header ve verileri almak) Senin yapman gereken bu bilgileri aldığım yerde veritabanına kaydetmek.

    //Verilerin Alınıp StringBuilder’ a eklenen yer
    foreach (DataRow DataRow1 in excelDataSet.Tables[0].Rows)
    {
    StringBuilder1.Append(“”);
    for (int count = 0; count < excelDataSet.Tables[0].Columns.Count; count++)
    {
    StringBuilder1.Append(string.Format("{0}”, DataRow1[count].ToString()));
    }
    StringBuilder1.Append(“”);
    }

    Sen yukarıdaki kodda “StringBuilder1.Append(string.Format(“{0}”, DataRow1[count].ToString()));” bu kodun yerine veritabanı bağlantını yapıp ilgili sql kodunu çalıştıracaksın ve DataRow1[count].ToString() ilede ilgili satırlardaki verileri alacaksın.

  • Mehmet Erkan Çelebi 18 Mart 2011, 14:05

    Üstad ben hastanede sağlık personeliyim excel de hazırlanmış bir maaş bordrosu var çoklu
    Başka bir sayfada tc kimlik girdirerek o sayfadan verileri çektiğim tek kişilik bir bordro sayfası da var. Şimdi ben asp ile bunu hastane içinden yayınlamak istiyorum Personel sayfada tc kimlik nosunun girsin Bordro hazırla dediğinde güncel dönem bordrosu ekrana gelsin bunu nasıl yapabilirim.

  • Enes Pekkaya 18 Mart 2011, 14:12

    Merhaba,

    Öncelikle siz personelin tc kimlik nosunu girdikten sonra excel dökümanını kullanıcya yükletmek mi istiyorsunuz? Eğer öyleyse “http://www.enespekkaya.com/net-de-excel-dosyasi-olusturmak/” yazımı okumanızı öneririm. Orada veritabınından verileri alıp excel dosyası oluşturmaktayım. Tabi kodlarda ilgili güncellemeleri yapmanız gerekmekte.

  • Hasan Sönmez 29 Mart 2011, 20:29

    Excel tablosundaki verileri varolan MsSqlServera nasıl aktarabiliriz?

  • Enes Pekkaya 29 Mart 2011, 21:59

    http://www.enespekkaya.com/aspnetde-excelden-veri-almak/ bu yazımda excelden veri almayı göstermekteyim.

Yorum Yapın

 

Twitter'dan Takip Et! Twitter'dan Takip Et!

Etiketler

Son Yazılar

Son Yorumlar

Bağlantılar

Arşivler