Home Yazılım C# C# DataGridView’deki Verileri Excele Aktarmak
formats

C# DataGridView’deki Verileri Excele Aktarmak

Tarih 22 Aralık 2012 yazar içinde C#, Genel, Yazılım

Merhaba Arkadaşlar;
Bugün sizlere veritabanından datagridviewe çektiğiniz verileri excele aktaracağız.
İlk önce references dosyanıza Microsoft.Office.Interop.Excel dll dosyasını yüklemeniz gerekiyor. Sonrası bebek oyuncağı :D

Formumuz da bir tane datagridview ve bir tane de button gerekiyor.

Butonun kodları;

Yazımız bu kadar arkadaşlar.
(Eğer bir sorunla karşılaşırsanız mesaj atmanız yeterli )
Görüşmek Üzere

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
17 Comments  comments 

17 Cevap

  1. Gürkan

    Hocam çok teşekkürler. Ben bir şey soracaktım. Datagridview deki verileri Excel de önceden hazırladığımız formata göre aktarabilir miyiz?

    Örneğin: Datagiridviewde Ad Soyad, TC NO, Baba Adı, Alışlar, Satışlar kolonları var. Kimin adı gridview de görünüyorsa aktaracak Excele ama sabit bir tabloya aktarak. Ben çıktısını alacağım. Sonra datagridview den başkasını seçince onu bu tabloya atacak, sonra başkasını..

     

    Bu şekilde yapmak mümkün mü?

     

    Teşekkürler.

    • Gürkan Bey Merhaba,
      Anladığım kadarıyla datagridviewdeki verilerinizi bir tabloya atıp çıktı almak veya verilere farklı tabloya aktarmak istiyorsunuz. Benim tavsiyem (tabi soruyu doğru anlamışsam :) ) bu kodlarla fazla uğraşmayın visual studio içindeki reportviewer kullanmanızı tavsiye ederim.

  2. Gürkan

    Evet hocam doğru anladınız soruyu. Reportviewer ile nasıl yapıldığına dair bir bilginiz var mı? Açıkçası bir hesap ekstresi çıktısı almak istiyorum. Bu konuda da bir yayın yaparsanız seviniriz.

    Teşekkürler

  3. Gürkan

    Usta şöyle bir video buldum. Burada cyrstal reporta aktarıyor. Ama datagridview de görünenleri aktarıyor. Visual studio 2008 ile yapılmış. Ne yapmak istediğini pek anlayamadım. Eğer bir bakarsan belki bir şeyler anlarsın.

    http://youtu.be/o9ne5DWwFik

  4. Kimsede sormamış arkadaş

    for (int j = 0; j < p.dataGridView1.Columns.Count; j++)

    satırındaki ‘p’ nedir nerden geldi diye…

    • Hakan Bey Merhaba,
      Öncelikle bulduğunuz hata için sizden teşekkür ederim. Yaptığım projede farklı componentler kullandığım için kodları sade bir şekilde değilde kendi form tasarımıma göre koymuşum. Dikkat de etmediğim içinde kodu direkt yayınlamışım. Herkes den bu hata için özür dilerim Hakan Beye teşekkür ederim. 
      KODLAR GÜNCELLENMİŞTİR…
      İyi Günler…

  5. abdurrahman

    Merhaba kolay gelsin, datagridviewdeki verileri Excele aktarıyorum. Fakat “Demirbaş No” isimli alanım var. Mesela 1-2-6 şeklinde string türünden kayıt yapıyorum. Excele aktarma yaptığımda bu alan Tarih formatına dönüşüyor ve 02.Ocak.2006 şeklini alıyor. Excel de hücre biçimlendirme ile de düzelmeyip alakasız sayı çıkıyor.

    Datagridviewdeki metin alanını nasıl aynı şekilde excele aktarım yapabilirim? (Hata sadece 1-2-6 veri kaydedilmiş alanda oluyor.)Kolay gelsin..

    • Merhabalar,
      Elimde sorununuzu çözecek bir kod var bir bunu deneyebilir misiniz?
      (Yayınlamış olduğum koda uygun bir şekilde hazırladım)
      myRange.Cells.Columns.NumberFormat = “###”;

  6. abdurrahman

    Merhaba, bu kezde 3-22/19 olan satırı 43546 şeklinde excele aktardı.
    Aktarma yapılan 1. kolonu “Metin” olarak formatlasak galiba düzelir. ilk kolonu metin olarak formatlayabilirmiyiz? Bu şekilde 1. kolonda sayıda olsa başka ifade de olsa aynı şekilde excele aktarabilir.

    • Merhabalar,
      Yaptığım bu kod çalışıyor ama bir zaman sonra hata veriyor. Hatayı daha henüz bulamadım kodu size gönderiyorum birde siz bakın belki benim sistemde bir hata vardır.
      (Yayınlamış olduğum koda uygun bir şekilde hazırladım)

      myRange.Cells.Columns.NumberFormat = dataGridView1.Columns[j].HeaderText.ToString();

  7. abdurrahman

    İnternetten de araştırdım, bilen arkadaşlara da sordum ama bir türlü olmuyor.
    Hata sayılar arasına – koymadan kaynaklanıyor. 01-0001-01 şeklinde olursa tarihe çeviremediğinde 01-0001-01 şeklinde kaydediyor(Burda Sorun Yok). Fakat 1-1-1 şeklinde olan kaydı tarih formatına uyduruyor ve excele 1 Oca.2001 şeklinde aktarıyor.

    Sizin yukarıdaki kodda;
    Microsoft.Office.Interop.Excel.Range myRange = (Microsoft.Office.Interop.Excel.Range)sheet1.Cells[StartRow + i, StartCol + j];
    myRange.Value2 = dataGridView1[j, i].Value == null ? “” : dataGridView1[j, i].Value;
    olan kısmı (Excele aktarırken Tarih bölümünü / Sayıya çevirdiğinden)

    DataGridViewCell cell = dataGridView1[j, i];
    sheet1.Cells[i + 2, j + 1] = cell.Value;

    yukarıdaki şekilde düzelttim. Bu şekilde tarih olan sütun tarih olarak aktarıldı.

    İlginiz için yine de çok teşekkür ederim. İyi çalışmalar.

    {
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    excel.Visible = true;

    object Missing = Type.Missing;
    Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Missing);
    Microsoft.Office.Interop.Excel.Worksheet sheet1 = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1];
    int StartCol = 1;
    int StartRow = 1;
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
    Microsoft.Office.Interop.Excel.Range myRange = (Microsoft.Office.Interop.Excel.Range)sheet1.Cells[StartRow, StartCol + j];
    myRange.Value2 = dataGridView1.Columns[j].HeaderText;
    }
    StartRow++;
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
    try
    {
    DataGridViewCell cell = dataGridView1[j, i];
    sheet1.Cells[i + 2, j + 1] = cell.Value;
    }
    catch
    {
    }
    }
    }
    }

  8. okan

    http://www.csharpnedir.com/forum2/printer_friendly_posts.asp?TID=12364

    Yukarıdaki link te aynı sorunla karşılaşan biri olmuş. Datatable verileri excele aktarıyor ben yapmaya çalıştım olmadı. Belki kodları sizin koda göre düzenleyebilirseniz, bizde öğrenmiş oluruz. Kolay gelsin.

  9. Mehmet

    Merhaba. Windows From uygulamamda bulunan DataGridView deki verileri excel’e aktardım. Fakat ilk iki kolonun excel ortamına aktarılmasını istemiyorum sizce nasıl bir yol izleyebilirim ? Yardımcı olabilirseniz memnun olurum

    • Mehmet bey merhaba,

      Anladığım kadarıyla ilk iki kolunu excele aktarmak istemiyorsunuz. For döngüsündeki i ve j değişkenin başlangıç değerini değiştirip tekrar deneyin. Ben “2″ diye düzelttim olmazsa sayıyı arttırıp azaltın.

      for (int i = 2; i < dataGridView1.Rows.Count; i++)
      for (int j = 2; j < dataGridView1.Columns.Count; j++)

      Eğer olmazsa tekrar iletişime geçelim.
      İyi günler…

  10. battal

    tarih formatlı verileri düzgün atmıyor var mı düzeltmenin bir yolu?

Bir Cevap Yazın

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


yedi × 3 =

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">