Asp.Net Excel’den DataTable’a ve Access’e Bilgi Aktarımı

exceltoaccess
Asp.Net ile Excel’de hazırlanan bir liste içindeki bilgileri DataTable’a ve Acess’e nasıl aktaracağız onun ile alakalı bir uygulama. Bu uygulama veri tabanına öğrenci bilgilerini girerken her öğrenci için tek tek uğraşmak yerine hazır bir excel tablosundan bilgileri alıp hazırlamış olduğumuz Access veritabanı’na aktaracağız, uygulamanın çalışan halini konu sonundan indirebilirsiniz…
İlk olarak Excel’de listemizi ve Access’de de veritabanı ve tablomuzu oluşturuyoruz.
exceldenaccess
Excel’de listeyi hazırlarken sıralamanın Access’de hazırladığımız tablodaki olmasına dikkat ediyoruz adsoyad,sinif,numara şeklinde..
Şimdi sayfamızı oluşturabiliriz.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>www.aspnetornekleri.com Excel'den Access'e</title>
</head>
<body>
    <form id="form1" runat="server">
<div>    
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="yukleaktar" runat="server" Text="Dosya Yükle & Aktar" onclick="yukleaktar_Click"/>
</div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</form>
</body>
</html>

Yükleme işlemi için kodlarımızı yazmadan önce sayfamıza

using System.IO;
using System.Data.OleDb;
using System.Data;

eklemeyi unutmuyoruz, Dosya Yükle & Aktar butonumuz için gerekli kodlar

string baglanti = "";
            if (FileUpload1.HasFile)
            {
                string dosyaadi= Path.GetFileName(FileUpload1.PostedFile.FileName);
                string dosyauzanti= Path.GetExtension(FileUpload1.PostedFile.FileName);
                string dosyayeri = Server.MapPath("~/gecici/" + dosyaadi);
                FileUpload1.SaveAs(dosyayeri);
                //www.aspnetornekleri.com
                if (dosyauzanti== ".xls")
                {
                    baglanti = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dosyayeri+ ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
                }
                else if (dosyauzanti== ".xlsx")
                {
                    baglanti = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dosyayeri+ ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                }
                //www.aspnetornekleri.com
                OleDbConnection bag = new OleDbConnection(baglanti);
                OleDbCommand komut = new OleDbCommand();
                komut.CommandType = System.Data.CommandType.Text;
                komut.Connection = bag;
                OleDbDataAdapter dAdapter = new OleDbDataAdapter(komut);
                DataTable excelkayitlari = new DataTable();
                bag.Open();
                DataTable excelsayfasi = bag.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                string excelsayfasininadi = excelsayfasi.Rows[0]["Table_Name"].ToString();
                komut.CommandText = "SELECT * FROM [" + excelsayfasininadi + "]";
                dAdapter.SelectCommand = komut;
                dAdapter.Fill(excelkayitlari);
                bag.Close();
                GridView1.DataSource = excelkayitlari;
                GridView1.DataBind();
                OleDbConnection baglan = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/ogrenci.accdb"));
                foreach (GridViewRow row in GridView1.Rows)
                {//www.aspnetornekleri.com
                    OleDbCommand komut1 = new OleDbCommand("insert into bilgiler (adsoyad,sinif,numara) values (@adsoyad,@sinif,@numara)", baglan);
                    komut1.Parameters.AddWithValue("@adsoyad", HttpUtility.HtmlDecode(row.Cells[0].Text));
                    komut1.Parameters.AddWithValue("@sinif", HttpUtility.HtmlDecode(row.Cells[1].Text));
                    komut1.Parameters.AddWithValue("@numara", row.Cells[2].Text);
                    if (ConnectionState.Closed == baglan.State)
                        baglan.Open();
                    komut1.ExecuteNonQuery();
                    baglan.Close();
                }
                File.Delete(dosyayeri);

Neler Yapıldı kısaca açıklamak gerekirse ilk olarak Excel dosyasını sunucuda oluşturduğumuz gecici isimli klasöre yüklüyoruz daha sonra excel içindeki bilgileri gridview ile ekranda gösterip her satırdaki bilgiyi okuyarak Access veri tabanına kaydediyoruz.

Excel’den DataTable’a ve Access’e Bilgi Aktarımı Uygulamasını İndir!!!

exceltoaccess

  • Çeşme Mekan

    string sorgu=(“select isnull( max(examid),0) + 1 from oe_exams”);

    merhaba yukarıdaki access kodunda sürekli hata alıyorum. aldığım hata şu. kullanılan fonksiyon ile hatalı sayıda değişken kullanıldı. aynı sorguyu iff(isnull ve nz fonksiyonu ile de yaptığımda aynı hatayla karşılaşıyorum.

    OleDbConnection con;
    OleDbCommand cmd;

    con = new OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/benimtablom.mdb;”);
    con.Open();
    string sorgu=(“select isnull( max(examid),0) + 1 from oe_exams”);
    cmd = new OleDbCommand(sorgu, con);
    int examid = (Int32)cmd.ExecuteScalar();
    string sorgu1 = “insert into oe_exams values(@examid,@mid,@sid,@noq,@ncans,@stdate,now())”;
    cmd = new OleDbCommand(sorgu1, con);
    cmd.Parameters.Add(“@examid”, OleDbType.VarChar).Value = examid;
    cmd.Parameters.Add(“@mid”, OleDbType.VarChar).Value = exam.mid;
    cmd.Parameters.Add(“@sid”, OleDbType.VarChar).Value = exam.sid;
    cmd.Parameters.Add(“@noq”, OleDbType.VarChar).Value = exam.SIZE;
    cmd.Parameters.Add(“@ncans”, OleDbType.VarChar).Value = exam.ncans;
    cmd.Parameters.Add(“@stdate”, OleDbType.Date).Value = exam.StartTime;
    cmd.ExecuteNonQuery();
    con.Close();

  • Zeynel Karahan

    Sayın hocam yaptığım bir exel çalışması var. Resimli fiyat teklifi. Bu fiyat teklifinde ürünler sayfasından ürünleri ürün kodu yazarak teklif sütunlarına çağırabiliyorum .
    Yalnız 20 kalemden sonra yeni sütün eklediğimde ciddi bir sorunla karşılaşıyorum.
    Yeni sütün ekleyip formülleri taşıdığımda yalnızca yazılı dökümler eklenebiliyor fakat görsel kopyaladığım sütünün görselini çoğaltıyor.
    Bunu nasıl sisteme sokabilirim.
    Rarlı dosyayı yollasam bana yardımcı olabilirmisiniz.Saygılarımla

    • BilisimOgretmeni

      yollayın inceleme fırsatı bulabilirsem ilgilenirim

  • http://www.alibayri.com Ali Bayrı

    Hocam Aşagıdaki hatayı alıyorum localde çalıştırınca bu örneği
    ‘System.Data.OleDb.OleDbPermission, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’

  • Borahan

    Arkadaşlar merhaba;
    İşyerinde geliştirilen bir projeiçin yardımlarınıza ihtiyacım var. Windows form üzerinden yaptığım programı web tabanlı hale getirmem gerekiyor ama asp.net tecrübem olmadığından baya bir uğraşmama rağmen çözemedim. Şimdi olayı kısaca anlatayım size aşağıdaki resimde görüleceği üzere bir tane Devexpressin aspxgridview i var ben bunu sayfanın load anında sorguyla dolduruyorum.

    Sorum şu ben mouse ile herhangibir satırı seçili hale getirip ilgili kolondaki kanal ismini yukardaki textboxa yazdırmak. Mesala CINE 5 satırına tıklayınca bunu yukardaki excele aktar butonunun yanındaki alana yazdırmak.

    Bunu windows form ekranında olsa Click eventının altına yazardık ama asp.nette nasıl oluyor çözemedim. Nette araştırdım ama sonuç sıfır sanırım pek anlamıyorum bu asp.netten. Yardım edebilecek olan olursa çok sevinirim