C# Excelden Veri Okuma ve DataTable’a Yükleme – XLSX , dersim ile C# eğitim setime devam ediyorum. Bu dersimizde Bir çok projede işimize yarayan XLSX uzantılı Excel dosyalarındaki bilgileri okuyup bir datatable’a yükleme işlemini göreceğiz.
C# Excelden Veri Okuma ve DataTable’a Yükleme – XLSX
Excelden veri okuma hepimize en az bir kere gerekli olmuştur. Elbette bana da bugün lazım oldu ve önceden yazdığım kodları buldum ve paylaşmak istedim.
Bu dersimdeki kodlar sadece xlsx uzantılı dosyaları okuyabilir. Elbette bu kodlar ile eski versiyonları da okuyabilirsiniz ancak bir connectionstring cümlesini değiştirmeniz gerekiyor. Onu da istediğiniz versiyona göre araştırır öğrenirsiniz. ;)
Öncelikle projemize aşağıdaki namespace’leri ekliyoruz.
using System.Data.OleDb; using System.Globalization;
namespace’leri ekledikten sonra formumuza bir textbox ve button ekliyoruz ve buttonun click eventine şu kodları yazıyoruz.
OpenFileDialog ac = new OpenFileDialog(); ac.Filter = " Xlsx Dosyaları |*.xlsx| Bütün Dosyalar|*.*"; ac.ShowDialog(); txt_excel_sec.Text = ac.FileName.ToString();
Bu kodlar ile okuyacağımız excel dosyasını seçeceğiz. Bize bir dosya seçme penceresi açıyor ve okumak istediğimiz exceli seçiyoruz ve excel dosyasının tam yolunu textbox’a yazıyoruz. Bu OpenFileDialog konusunu C# OpenFileDialog Nasıl Kullanılır? başlıklı dersimde tüm özellikleri ile anlattım.
Sonrasında okuma kodlarına geçiyoruz.
if (txt_excel_sec.Text.Trim().Length > 0) { DataTable dtexcel = new DataTable(); string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + bte_excel_sec.Text + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=0\""; OleDbConnection conn = new OleDbConnection(strConn); conn.Open() DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); DataRow schemaRow = schemaTable.Rows[0]; string sheet = schemaRow["TABLE_NAME"].ToString(); if (!sheet.EndsWith("_")) { string query = "SELECT * FROM [" + sheet + "]"; OleDbDataAdapter daexcel = new OleDbDataAdapter(query, conn); dtexcel.Locale = CultureInfo.CurrentCulture; daexcel.Fill(dtexcel); } conn.Close(); Grid1_Update(dtexcel); } else { MessageBox.Show("Excel seçmediniz."); }
Şimdi kodlarımızı açıklayalım.
Öncelikle okumak istediğimiz excel dosyasının yolu textbox’ta yazılı mı ona bakıyoruz. Eğer yazılı değilse kodlarımızı çalıştırmayacağız.
Yeni bir datatable tanımlıyoruz ve bir OleDBConnection bağlantısı ile excel’e bağlanıyoruz. Bağlantıyı açtıktan sonra da excelde verilerin olduğu alanın bir tablo şemasını çıkartıp datatable’mizi ayarlıyoruz. Bunu yapmazsak datatable için kolonlar tanımlamak zorunda kalırdık.
Tablo şemasını oluşturduğumuz excel sayfasının da adını alıyoruz ve tablo adı olarak ayarlıyoruz.
Bütün bunlar tamamlandıktan sonra da Select * from diyerek Excel sayfasındakş bütün verileri okuyoruz ve datatable’ye ekliyoruz. Ekleme işleminden sonra da bağlantıyı kapatıyoruz ve aldığımız verileri gridde gösteriyoruz.
Grid1_Update(dtexcel); benim sürekli olarak kullandığım gridcontrol (DevExpress) nesnesi için doldurma metodudur. Burada bu metod bir DataTable parametresi alıyor. Bu metod ile ilgili de bir dersim var. C# DevExpress GridControl Kodla Özelleştirme buradaki linkten ilgili dersime gidebilirsiniz.
C# xlsx okuma konusu bu şekildedir arkadaşlar. Biraz üzerinde uğraşırsanız excel’i database olarak bile kullanabilirsiniz. Elbette bu asla önermeyeceğim bir iştir.
C# Excelden Veri Okuma ve DataTable’a Yükleme – XLSX, dersimde bu kadar arkadaşlar. Diğer güzel derslerimizde görüşmek üzere.
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
Takipte ve Sağlıcakla kalın. ;)