C# ile Veriyi Excele Aktarma

Seksenler

Yeni Üye
C# ile Veriyi Excele Aktarma
Forumlarda dolaşırken yine gözüme çarpan ve arkadaşların bulmakta sıkıntı çektiği bir projeyle tekrar karşınızdayız arkadaşlar. Bu projemizde sizlerle C# ile Veriyi Excele Nasıl Aktarırız? bunu göreceğiz.

Ben 1 sene öncesine kadar bir bot yazıp sitedeki verileri sırasıyla çekip Excel tablosuna yazıyordum. O sitenin yenilenmesi sonrası IP ile ilgili bir sıkıntı yaşadığım için projem askıya kalktı ve bir daha da açıkçası uğraşmak istemedim. İşimi çok kolaylaştırdığını söyle bilirim çünkü yapmış olduğum proje sınav sonuçlarını alıp Excel tablosuna yazıyordu. Bunu tek tek elle yapmaya kalkarsanız bu işlem tam 1 gününüzü alıyordu ve 2 kişiyle…

Bizzat kendimce onaylanmıştır. Projenin de gerçekleşme amacı budur.

Lafı fazla uzatmadan örneğimize dönecek olursak ilk olarak kullanacağımız nesne ve kütüphanelerden başlayabiliriz.

Kod:
DataSet ds;
DataTable dt = new DataTable();
BindingSource bs = new BindingSource();

Yukarıda bağlantı için gerekli olan kodlarımızı yazdık Binding nesnesi bizim tablomuzdaki verilerin Textbox nesnemize aktarılmasını sağlar.

Not : Biz bu projemizde bot yapmayacağız sadece Excel tablomuza nesnelerimiz de ki verileri ekleyeceğiz. İsteyen arkadaşlar yorum bırakırsa yapmış olduğum projenin kodlarını atabilirim. Halen çalışıyor.

Projemizde 1 DataGrid, 2 TextBox, 1 FileUpload, 2 Button kullanıyoruz.
Kod:
  private void button2_Click(object sender, EventArgs e)
        { OpenFileDialog file = new OpenFileDialog();
             file.Filter = "Excel Files|.xls;.xlsx;*.xlsm";
             file.FilterIndex = 2;
             file.RestoreDirectory = true;
             file.CheckFileExists = false;
             file.Title = "Excel Dosyası Seçiniz..";
        if (file.ShowDialog() == DialogResult.OK)
        {
            string DosyaYolu = file.FileName;
            string DosyaAdi = file.SafeFileName;
            textBox4.Text = DosyaYolu;
            OleDbConnection xlsxbaglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=" + textBox4.Text + "; Extended Properties='Excel 12.0 Xml;HDR=YES'");
            DataTable tablo = new DataTable();
            xlsxbaglanti.Open(); 
            tablo.Clear(); 

            OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sayfa1$]", xlsxbaglanti);
            da.Fill(tablo); 
            dataGridView1.DataSource = tablo; /
            xlsxbaglanti.Close();
        }
}
C# Örneğimizde Excel tablomuzu seçtik. Dosya yolu ve adını alarak excel tablomuzu Datagrid nesnemize aktardık. Bu sayede verilerimizi nesnemizin içine çağırdık şimdi gelelim güncelleme işlemlerine.
Kod:
OleDbConnection xlsxbaglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + textBox4.Text + "; Extended Properties='Excel 12.0 Xml;HDR=YES'");
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sayfa1$]", xlsxbaglanti);
xlsxbaglanti.Open();
string kayit = "update [Sayfa1$] set tcKimlik=@tcKimlik1,sonuc=@sonuc where tcKimlik=@tcKimlik1";
OleDbCommand komut = new OleDbCommand(kayit, xlsxbaglanti);
komut.Parameters.AddWithValue("@ogrencikimlik", textBox1.Text);
komut.Parameters.AddWithValue("@sonuc", textBox3.Text);
komut.ExecuteNonQuery();
xlsxbaglanti.Close();
Dediğim gibi ben sonuç görme botu yapmıştım. Bu yüzden belirli bir öğrenci numarası olan kişilerin numaralarını alıp bu verileri tekrar güncelleyip sonuç ile birlikte yazıyordum. Siz ekleme işlemi yapmak isterseniz SQL cümlesini ona göre yazabilirsiniz. İşlem bu kadar.

Burada dikkat etmeniz gereken tek konu Excel kolonlarınızın buradaki kod ile aynı olması örnek verecek olursak A1 kolonunuz ogrencikimlik yerine başka birşey olursa ekleme işlemi yapmayacaktır. Program hataya düşecektir.
 

İstanbullu

Yeni Üye
İşyerimde Excel ile çalışmalar yapıyoruz ve yazılımcılarımız ile tam zamanlı çalışmalar yapıyoruz. Ben excel kullanmayı biliyorum fakat yazılım diliyle alakalı bir bilgim yok. Yavaş yavaş işim için ben de yazılım dili öğrenmeye çalışırken böyle bir konu karşıma çıktı. Konu güzel, kolay anlaşılır yazarın eline sağlık teşekkürler.
 

huseyin

Yeni Üye
Hocam iyi akşamlar .
Benim şöyle bir sıkıntım var textboxdan değilde Listboxdan almak istiyorum verileri ve bu verilerin listbox daki sırasıyla excele kaydedilmesini istiyorum . Onu nasıl yaparım