Bu örneğimizde C# Windows Form ile MS Excel bağlantısı ile veri çekme işlemi gerçekleştireceğiz. MS Excel’ de bulunan sayfamızda Ad sütunundaki bulunan verileri Liste(List) içine çektikten sonra ListBox içinde görüntüleyeceğiz.
Bu işlemden sonra ise List içinden 3 adet veriyi rastgele bir şekilde seçerek yine formumuzda yer alan diğer ListBox içinde görüntüleyeceğiz.
Örneğimiz için Formumuza 2 adet Button ve 2 adet ListBox ekleyelim.

Kullanacağımız excel dosyası ise benim çalıştıığım bilgisayarda D sürücüsünde ve PersonelListesi.xlsx adında bir dosya.

Burada Excel dosyamızda hangi sayfayı kullanacağımız ve hangi sütundaki verilerin çekileceği önemlidir. Üstteki resimde göreceğiniz üzere Personel sayfasında Ad sütununu örneğimizde kullanacağız.
Kodlarımıza geçelim.
İlk olarak bağlantı için gerekli olan aşağıdaki satırı ekleyelim.
using System.Data.OleDb;
Daha sonra bağlatımızda kullanacağımız nesneleri ve Listemizi global olarak oluşturalım.
List<string> kisiler = new List<string>();
OleDbConnection con;
OleDbCommand cmd;
OleDbDataReader dr;
Verileri Getir butonu için C# Kodlarımızı aşağıdaki gibi yazalım.
private void button1_Click(object sender, EventArgs e)
{
con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = D:\PersonelListe.xlsx; Extended Properties ='Excel 12.0 xml; HDR = YES; '");
cmd = new OleDbCommand("SELECT *FROM [Personel$]", con);
con.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
kisiler.Add(dr["Ad"].ToString());
}
con.Close();
foreach (var kisi in kisiler)
{
listBox1.Items.Add(kisi);
}
}
Son olarak Listemizi kullanarak rastgele kayıt çekme işlemimizi gerçekleştirmek için Button2 kodlarımızı yazalım.
private void button2_Click(object sender, EventArgs e)
{
listBox2.Items.Clear();
Random rnd = new Random();
for (int i = 0; i < 3; i++)
{
int tutulan = rnd.Next(0, kisiler.Count);
listBox2.Items.Add(kisiler[tutulan]);
kisiler.RemoveAt(tutulan);
}
}
Kodlarımız tamamlanmış oldu.
Kodlarımızın tamamı aşağıdaki gibi olacaktır.
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 ExceltoList
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<string> kisiler = new List<string>();
OleDbConnection con;
OleDbCommand cmd;
OleDbDataReader dr;
private void button1_Click(object sender, EventArgs e)
{
con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = D:\PersonelListe.xlsx; Extended Properties ='Excel 12.0 xml; HDR = YES; '");
cmd = new OleDbCommand("SELECT *FROM [Personel$]", con);
con.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
kisiler.Add(dr["Ad"].ToString());
}
con.Close();
foreach (var kisi in kisiler)
{
listBox1.Items.Add(kisi);
}
}
private void button2_Click(object sender, EventArgs e)
{
listBox2.Items.Clear();
Random rnd = new Random();
for (int i = 0; i < 3; i++)
{
int tutulan = rnd.Next(0, kisiler.Count);
listBox2.Items.Add(kisiler[tutulan]);
kisiler.RemoveAt(tutulan);
}
}
}
}
Bu işlemden sonra artık rasgele seçilen 3 kişi ekranda görünecektir.