C# Excel’den Veri Arama

Merhaba arkadaşlar,

Bugün küçük bir excel uygulaması paylaşacağım sizinle. Yapmak istediğimiz;

C# ile bir excel dosyasını açmak ve buradaki verileri DataGridView ile programımıza almak. Daha sonrasında dilersek tüm verileri göstermek dilersek bu excel verileri içerisinde arama yapmak olacaktır.

Öncelikle hemen bir C# Windows Form Application açıyoruz ,

Aşağıdaki gibi bir form yapıyoruz. Yazıları textbox ile aldım bir buton ile arama yaptırdım ve gelen verileri DataGridView’e aktardım.

Form-ornegi

 

Daha sonra bir excel dosyası oluşturalım. Örnek bir dosya oluşturdum içerisindeki veriler dilediğiniz gibi olabilir. Bu dosyayı ben direk C sürücüsüne kaydettim siz farklı yere kaydedebilirsiniz sadece koddaki Data Source bölümünü değiştirmeniz yeterli dosyanın nerede olduğunun önemi yok.

excel-ornek

 

Şimdi ise kodları yazalım. Elimden geldiğince yanlarında açıklamaya çalıştım ne yaptığımı.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb; //Bu OleDb fonksiyonlarını kullanmamız için kullanacağımız kütüphane
 
namespace ExcelForWebsite
{
    public partial class Form1 : Form
    {
        public Form1()
        {
        // Benim dosyam C içinde cagdasdag isminde bir dosyaydı siz bunun yerini değiştirebilirsiniz.
        OleDbConnection xlsxbaglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\cagdasdag.xlsx; Extended Properties='Excel 12.0 Xml;HDR=YES'");
        DataTable tablo = new DataTable(); // aşağıda kullanmak için tablo adında bir DataTable oluşturuyoruz.
 
        private void btn_tum_veri_Click(object sender, EventArgs e)
        {
            xlsxbaglanti.Open(); //Bağlantımızı açtık
            tablo.Clear(); //Önceki verilerle karışmaması için tabloyu her tıklamada sıfırlıyoruz
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", xlsxbaglanti); //OleDbDataAdapter ile excel dosyamızdaki verileri listeliyoruz. Burada önemli olan kısım sorgu cümleciğinde ki Sheet1$ kısmı yerine excel dosyasındaki sayfa ismini yazmanız gerek. Bu isim excel dosyanızı açtığınızda en altta yazan isimdir. Eğer değiştirmediyseniz zaten Sayfa1 olarak yazar. Ayrıca " $ " simgesi ve köşeli parentezleri ellememeniz gerek.
            da.Fill(tablo); //Gelen sonuçları datatable'a gönderiyoruz.
            dataGridView1.DataSource = tablo; //datatable'da ki verileri datagrid'de listeliyoruz.
 
            xlsxbaglanti.Close(); //Bağlantıyı kapatıyoruz.
        }
 
        private void btn_ara_Click(object sender, EventArgs e)
        {
            tablo.Clear(); //Önceki verilerle karışmaması için tabloyu her tıklamada sıfırlıyoruz
            xlsxbaglanti.Open();//Bağlantımızı açtık
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sheet1$] where kod=" + textBox1.Text, xlsxbaglanti); //Yine aynı aktarım fakat burada bir sütunda arıyoruz yani excel örneğinde görebilirsiniz kod sütununda arama yapacağımızdan dolayı biz textbox'daki yazıyı kod sütununda arıyoruz. Siz kod yerine kendi sütun isminizi yazabilirsiniz. 
            da.Fill(tablo); //Gelen sonuçları datatable'a gönderiyoruz.
            dataGridView1.DataSource = tablo; //datatable'da ki verileri datagrid'de listeliyoruz.
            xlsxbaglanti.Close(); //Bağlantıyı Kapatıyoruz. 
        }
 
    }
}

Aşağıdaki iki butonlada denedikten sonraki çıktıları paylaşıyorum. Yapamadığınız bir yer olursa yorum olarak sorabilirsiniz. Aynı mantık ile SQL veya Access içerisinde de aramalar yapabilirsiniz sadece bir kaç komut değişecektir.

                kodara-deneme         tumveri-deneme

 

One Comment

  1. merhaba Çağdaş bey ben bir hata alıyorum excel açık olduğunda program çalışıyor bir hata vermiyor fakat aynı programı excel kapalı olduğunda denersem hata veriyor? Additional İnformation: dış tablo istenilen şekilde değil.
    Bu konuda yardımcı olurbilir misiniz?
    Teşekkür Ederim.

    Cevapla

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Protected by WP Anti Spam