C# ile Excel Dosyasına Bağlanma (OleDbConnection ile) – Web Tasarım & Programlama
C# EXCEL Programlama Windows Form Örnekleri

C# ile Excel Dosyasına Bağlanma (OleDbConnection ile)

Tarafından yazılmıştır AhmetC

Bu yazımızda OledbConnection kullanarak Excel dosyasına bağlanıp Select (Veri çekme), İnsert (Veri Ekleme), Update (Güncelleme) işlemlerini gerçekleştireceğiz ve Excel dosyasındaki verilerin Datagridview de görüntülenmesini sağlayacağız.

Örneğimizde D sürücüsünde bulunan ve Öğrenci listesi tutan “ogrenci.xlsx” isimli bir excel dosyasına bağlanıp bu işlemleri gerçekleştireceğiz. Excel dosyamızı aşağıdaki şekilde hazırlıyoruz.

Daha sonra formumuzu aşağıdaki şekilde tasarlayalım.

excel_datagrid

Kodlamaya başlayalım. İlk olarak bağlantı sağlayabilmek için;

ekliyoruz.

Daha sonra verileri Getir butonuna çift tıklayarak excel verilerimizin DataGridView üzerinde görünmesini sağlamak amacıyla aşağıdaki kodları yazıyoruz. OledbConnection bağlantı cümlesinde HDR= YES yaparak ilk satırın sütun başlığı olarak ayarlanmasını sağlıyoruz.

Ekle komutuna basınca Textbox’ lara girmiş olduğumuz değerlerin ilgili Excel sütunlarına kayıt işlemi için aşağıdaki kodları yazıyoruz.

Güncelleme işlemini TextBox1′ e girdiğimiz Öğrenci Numarasına göre yapalım. Örneğin 155 nolu Öğrencinin bilgilerini değiştirmek gibi. Bunun için Güncelle butonuna aşağıdaki kodları yazabiliriz.

Yukarıdaki örnekte bağlantıyı tekrar tekrar yazmak yerine Public olarak tanımlayabilirsiniz. İsterseniz veri seçme için bir metot oluşturarak Güncelleme ve Ekleme işlemlerinden sonra veya form açıldığında datagrid’ in güncellenmesini sağlayabilirsiniz.

Kodların bu şekilde düzenlenmiş hali ise aşağıdaki şekilde olacaktır.

Yorum

  • Merhaba kodum aşağıdaki gibi ve aldığım hata da şu : Toplama işlevinin parçası olarak belirtilen ‘CLIENT_ID’ ifadesini içermeyen bir sorgu yürütmeyi denediniz. Sizce nerede hata yapıyorum? Yardımcı olursanız sevinirim.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.OleDb;
    using System.Data;

    namespace ConsoleApp1
    {

    class Program
    {
    static void Main(string[] args)
    {
    OleDbConnection xlsxbaglanti = new OleDbConnection(@”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\exhibitA-input.xlsx; Extended Properties=’Excel 12.0 Xml;HDR=YES'”);
    xlsxbaglanti.Open();
    OleDbCommand komut = new OleDbCommand();
    komut.Connection = xlsxbaglanti;
    string sql = “SELECT COUNT(CLIENT_ID) AS CLIENT_COUNT, DISTINCT_PLAY_COUNT FROM( SELECT COUNT(SONG_ID) AS DISTINCT_PLAY_COUNT, CLIENT_ID FROM(SELECT CLIENT_ID, SONG_ID FROM [YeniSayfa$] WHERE PLAY_TS = ‘10.08.2016’ GROUP BY SONG_ID) GROUP BY CLIENT_ID) GROUP BY DISTINCT_PLAY_COUNT”;
    komut.CommandText = sql;
    komut.ExecuteNonQuery();
    OleDbDataReader oku = komut.ExecuteReader();

    while (oku.Read())
    {
    string client_count = oku[“CLIENT_COUNT”].ToString();
    string distinc_play_count=oku[“DISTINCT_PLAY_COUNT”].ToString();
    Console.WriteLine(“client count:”+ client_count + “distinct play count :” + distinc_play_count+ Environment.NewLine);
    }
    xlsxbaglanti.Close();
    Console.ReadLine();
    }
    }
    }

  • Merhaba
    Excelden datagridviewe veri çekme işlemini biraz faarklı olarak başarı ile yaptım sıkıntı yok dosya yolu sabit yerine openfile dialog ile seçip listeleyebiliyorum ama benim şöyle bir sorunum var kullanacağım excel dosyasını internetten indiriyorum ve her indirdiğimde sayfa ismi farklı geliyor.Sayfa ismini değişekene atamak istiyorum.Bunun yolu varmıdır?Nedir? TEŞEKKÜRLER.

    Kullandığım Kod :
    OpenFileDialog ofd = new OpenFileDialog();
    {
    ofd.Filter = “xlsx |*.xlsx| xls|*.xls”;
    ofd.Title = “Excel Dosyası Seçiniz..”;
    ofd.RestoreDirectory = true;
    };
    if (ofd.ShowDialog() == DialogResult.OK)
    {
    string DosyaYolu = ofd.FileName;// dosya yolu

    OleDbConnection baglanti = new OleDbConnection(@”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” + DosyaYolu + “; Extended Properties=’Excel 12.0 xml;HDR=YES;'”);
    baglanti.Open();
    OleDbDataAdapter da = new OleDbDataAdapter(“SELECT * FROM [Siparişler_07092018$C:E]”, baglanti);
    DataTable DTexcel = new DataTable();
    da.Fill(DTexcel);
    DataTable datasource = DTexcel;
    dataGridView1.DataSource = DTexcel;
    baglanti.Close();
    }

    • Excel.Application ExcelObj = new Excel.Application();

      Excel.Workbook theWorkbook = null;

      string strPath=”dosya yolu yazılacak”;

      theWorkbook = ExcelObj.Workbooks.Open(strPath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);

      Excel.Sheets sheets = theWorkbook.Worksheets;

      Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);//Get the reference of second worksheet

      string sayfaAdi= worksheet.Name;//Çalışma sayfasının adını alıyor.

  • c#2010 kullanıyorum excell 2013 yüklü

    referanslardan office 15.0 object yüklüyorum fakat datagrite görün bir türlü gelmiyor.

    =Microsoft.ACE.OLEDB.12.0 bu kısmıda 15.0 olarakta denedim sonuç yok

    yardımcı olabilir misiniz

  • birleştirilmiş satırlar var ise aktarma da sıkıntı oluyor bunu nasıl çözeriz hocam.
    örneğin

    no kişibilgileri
    ad soyad
    1 A B

    Yukarıdaki gibiyse excel şablonumuz soyad kısmını forma aktarmıyor

Yorum Yap