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

sdkbyrm

webmasterfrm
Üyelik Tarihi
23 Aralık 2020
Mesajlar
813
Beğeniler
1
Ticaret: 0 / 0 / 0
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.


Ayrıca C# dilinde yazılmış daha fazla örnek ve konular için C# Dersleri yazısını yada sağ üstte bulunan site içinde arama panelini kullanabilirsiniz.



Ö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.

041215_1633_CileExcelDo1.png


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

excel_datagrid

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


1
2
3

using System.Data.OleDb;
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.


1
2
3
4
5
6
7
8
9
10
11
12

private void button1_Click(object sender, EventArgs e)
{
OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\ogrenci.xlsx; Extended Properties='Excel 12.0 xml;HDR=YES;'");
baglanti.Open(); //www.yazilimkodlama.com
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sayfa1$]", baglanti);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt.DefaultView;
baglanti.Close();
}
041215_1633_CileExcelDo3.png


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.


1
2
3
4
5
6
7
8
9
10

OleDbCommand komut = new OleDbCommand();
OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\ogrenci.xlsx; Extended Properties='Excel 12.0 xml;HDR=YES;'");
baglanti.Open();
komut.Connection = baglanti; //www.yazilimkodlama.com
string sql = "Insert into [Sayfa1$] (NUMARA,AD,SOYAD,SINIFI) values('" + textBox1.Text + "','" + textBox2.Text + "','"+textBox3.Text+"','"+textBox4.Text+"')";
komut.CommandText = sql;
komut.ExecuteNonQuery();
baglanti.Close();
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.


1
2
3
4
5
6
7
8
9
10

OleDbCommand komut = new OleDbCommand();
OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\ogrenci.xlsx; Extended Properties='Excel 12.0 xml;HDR=YES'");
baglanti.Open();
komut.Connection = baglanti;
string sql = "Update [Sayfa1$] set AD='"+textBox2.Text+"',SOYAD='"+textBox3.Text+"',SINIFI='"+textBox4.Text+"' WHERE NUMARA="+textBox1.Text+"";
komut.CommandText = sql; //www.yazilimkodlama.com
komut.ExecuteNonQuery();
baglanti.Close();
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.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

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;


namespace csharp_excel_baglanti
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); //www.yazilimkodlama.com
}
OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\ogrenci.xlsx; Extended Properties='Excel 12.0 xml;HDR=YES;'");
public void doldur()
{
baglanti.Open();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sayfa1$]", baglanti);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt.DefaultView;
baglanti.Close();
}
private void button1_Click(object sender, EventArgs e)
{

doldur();

}

private void button2_Click(object sender, EventArgs e)
{
OleDbCommand komut = new OleDbCommand();
baglanti.Open();
komut.Connection = baglanti;
string sql = "Insert into [Sayfa1$] (NUMARA,AD,SOYAD,SINIFI) values('" + textBox1.Text + "','" + textBox2.Text + "','"+textBox3.Text+"','"+textBox4.Text+"')";
komut.CommandText = sql;
komut.ExecuteNonQuery();
baglanti.Close();//www.yazilimkodlama.com
doldur();
}

private void button3_Click(object sender, EventArgs e)
{
OleDbCommand komut = new OleDbCommand();
baglanti.Open();
komut.Connection = baglanti;
string sql = "Update [Sayfa1$] set AD='"+textBox2.Text+"',SOYAD='"+textBox3.Text+"',SINIFI='"+textBox4.Text+"' WHERE NUMARA="+textBox1.Text+"";
komut.CommandText = sql;
komut.ExecuteNonQuery();
baglanti.Close();//www.yazilimkodlama.com
doldur();
}

private void Form1_Load(object sender, EventArgs e)
{
doldur();
}
}
}
Kaynak:

www.csharp-console-examples.com
 
Üst