datagridView’deki verileri excel’e aktarma C#.Net Ders76

datagridView’deki verileri excel’e aktarma C#.Net Ders76

Daha fazla bilgi için : www.gorselprogramlama.com

Örnek: Ders 75’deki örneğe Excele Aktar butonu ekleyelim.Ve aşağıdaki kodları yeni eklediğimiz Excele Aktar butonunun click olayına yazalım.Projeyi çalıştırmadan birkaç işlem yapmamız gerekecek.

Excele Aktar butonu dışındaki diğer form ve formlardaki nesnelere ait kodların bulunduğu Ders 75  için  Tıklayınız

**

Solution Explorer pencresinde References üzerinde sağ tıklıyoruz. Add Reference tıklanır.

Ekrana gelen pencereden Microsoft.Office.Interop.Excel seçilir ve ok’lenir.

[code lang=”csharp”]

private void btnExcelAktar_Click(object sender, EventArgs e)

{

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

excel.Visible = true; //Daha fazla bilgi için : www.gorselprogramlama.com

Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(System.Reflection.Missing.Value);

Microsoft.Office.Interop.Excel.Worksheet sheet1 = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1];

int StartCol = 1;

int StartRow = 1; //Daha fazla bilgi için : www.gorselprogramlama.com

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++) { //Daha fazla bilgi için : www.gorselprogramlama.com try { 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; } catch { ; } } //Daha fazla bilgi için : www.gorselprogramlama.com } } [/code]

Excele Aktar butonu tıklanınca sonuç

Dersin videolu anlatımı ve anlatımda yapılan projeyi indirmek için

Tıklayınız

Yorumlar 40

  • ellerinize sağlık.
    Allah razı olsun.
    o kadar güzel anlatıyorsunuz ki. süpersiniz.
    inşaallah derslerinizin devamı gelir.

    mümkünse projeleri eskisi gibi indirebilme şansımız olsaydı. üzerinde düzeltebilirdik.
    yine de çok faydalı . çok sağolun.

  • Hocam ellerinize sağlık 2 saattir ing dökümanlar arasında arıyordum başarılı bir kod bloğuna raslayamamıştım…Teşekkürler

  • Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) hocam böyle bir hata alıyorum. nasıl düzeltebilirim.

  • Exception from HRESULT: 0x800A03EC hocam o düzeldi şimdide böyle bir arıza veriyor

  • Bazı değerler uzun olduğundan excele atınca e+19 gibi çıkıyor. bunu nasıl çözümlerim ?

  • Hocam uzun kodlar çıkmamış.Lütfen bunları düzeltelim

  • bişe sorucam ben kodları yazdım excele atıyo ama arka planda çalışıyo açmıyo bilgisayarı kaparken kaydedip öyle görebiliryorum nasıl yapcaz yardımcı olabilirseniz sevinirim

  • Denendi bir sorun yok.Bir yerde hata yapıyor olabilirsin.

  • İki datagrid arasında veri aktarımı yapmam lazım. Nasıl yapabilirim. Veya şöyle açıklayayım. Excel belgesini programıma alıp istediğim biçimde düzenleyip dışarı excel olarak vermem lazım. Şablonlar sabit.

  • hocam cok güzel olmus ellerinize saglık fakat tek bir problemim var şöyle düşünün birde ögrenci kayıt tarihi olsun o tarih excel de sayısal bir deger olarak gözüküyor yani tarih degiskenini sayısal bir deger yapıyor.Yardım ederseniz sevinirim

  • Veri tabanındaki Tarih alanının veri türünü metin yap.Sorun çözülecektir.

  • baska bir şekilde olmaz mı cok büyük bir proje yapıyorum cünkü bütün her yeri degistirmem lazım o şekilde

  • Maalesef.

  • Çok İşime Yaradı Sağolun 🙂

  • Hocam Allah Razı Olsun

    Sizin Sayenizde Kendi Projemi Yaptım..

    Eli Öpülecek Adamsınız…

  • @eyup güner

    Bendede Böle Bir Sorun Oldu..Sorun Kodlardanm deggil Office Verisyonu İle AKalı Modifiye Olabilir..Yada Office 2013 Bende 2013 böle bir sorun var ama WMARE office 2003 süper calısyor..

  • hocam tşkler.
    arkdaslar kod gayet dogru ve çalışır durumda. hata sizin eski kodlarda olabilir.

  • Hocam merhaba verdiğiniz kodu programımda düzenledim ve çalıştı fakat benim isteğim şu ki excelde kendi belirlediğim sütundan başlayarak verileri dgv den alması yani, belirlediğim sütuna göndermesini istiyorum bunu nasıl yapabiliriz? teşekkürler

  • Hocam Anlatım için çok teşekkürler. Peki sadece istediğimiz kolonları exele atmak istersek ne yapmamız lazım.

  • hocam ben add refarence diyorum .NET microsoft.office felan çıkmıyor vs 2012 kullanıyorum nasıl yapacağım

  • enes:
    Add Reference tıkla.ekrana gelen menüden COM tıkla.Menünün sağ üstünde Search COM var.Oraya excel yaz.Ekrana geliyo.

  • Herkese Merhaba. DataGridView de bulunan örneğin “Öğrenci No” kolonunu excel e aktarnamak istediğimizde acaba ne yapabiliriz?

  • admin ilk olarak hızlı geri dönüşün için teşekkür ederim. Herhalde istediğimi anlatamadım. Benim istediğim ilk kolon hariç diğer veriler excele aktarılsın yani Öğrenci No alanı excele dahil olmasın. Şuan bende datagirdimdeki verileri excele attım fakat ilk iki kolonun gelmesini İSTEMİYORUM.

  • efe:
    Kodları aşağıdaki şekilde değiştirdiğinde datagridview deki ilk sütun excelde gözükmez.Aslında sadece bir iki değişiklik yaptım.döngüleri 0 yerine 1 ile başlattım. en sonda i+1 deki 1 leri sildim.

    Microsoft.Office.Interop.Excel.Application uyg = new Microsoft.Office.Interop.Excel.Application();
    uyg.Visible = true;
    Microsoft.Office.Interop.Excel.Workbook kitap = uyg.Workbooks.Add(System.Reflection.Missing.Value);
    Microsoft.Office.Interop.Excel.Worksheet sheet1 = (Microsoft.Office.Interop.Excel.Worksheet)kitap.Sheets[1];
    for (int i = 1; i < dataGridView1.Columns.Count; i++) //0 değil 1 ile başlattım { Microsoft.Office.Interop.Excel.Range myRange = (Microsoft.Office.Interop.Excel.Range)sheet1.Cells[1, i];//burdaki +1'i sildim myRange.Value2 = dataGridView1.Columns[i].HeaderText; } for (int i = 1; i < dataGridView1.Columns.Count; i++)//0 değil 1 ile başlattım { for (int j = 0; j < dataGridView1.Rows.Count; j++) { Microsoft.Office.Interop.Excel.Range myRange = (Microsoft.Office.Interop.Excel.Range)sheet1.Cells[j+2, i];//burdaki +1'i sildim myRange.Value2 = dataGridView1[i, j].Value; } }

  • Admin sorunum çözüldü. Bende 0 yerine bir den başlattım fakat diğer alanların algoritmasını kafada yanlış kurmuşum. Şuan sayende tam istediğim gibi oldu tekrardan teşekkür ederim.

    @admin

  • Program gayet güzel çalışıyor.Eline sağlık.Tarihleri doğru şekilde atmıyor.Bunun düzeltmenin var mı bir yolu?

  • Elinize sağlık Hocam.Yazınız çok yardımcı oldu.

  • Merhaba, gridviewe çektiğim kayıtları excele aşağıdaki kodlarla aktarıyorum.

    using (SaveFileDialog saveDialog = new SaveFileDialog())
    {
    string exportFilePath = Baglanti.dosyayolu + “\\CariHesaplar.xlsx”;
    gridCariler.ExportToXlsx(exportFilePath);
    }
    Ancak kaydettiğim excel dosyasında sütunların genişliklerini ayarlamak istiyorum. Yardımcı olabilirseniz sevinirim

  • hocam selamlar,
    datagridview’dan excele yalnızca saat formatını nasıl aktarabilirim? tarih ile beraber görünmesini bir türlü engelleyemedim..

  • nuri :
    split metodunu kullanarak parçalama işlemi yapabilirsin.

  • Teşekkür ederim hocam kısa bir örnek verir misin? Datagridview’dan excele atarken sıkıntı yok ama excel’de görüntülerken 30.12.1899 16:06:20 şeklinde görüntülüyor…

  • Kodlarım da aşağıdaki gibi;

    Excel.Application xlApp;
    Excel.Workbook xlWorkBook;
    Excel.Worksheet xlWorkSheet;
    Excel.Range xlRange;
    object misValue = System.Reflection.Missing.Value;

    Int16 i, j;

    xlApp = new Excel.Application();
    xlWorkBook = xlApp.Workbooks.Add(misValue);

    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

    xlWorkSheet.Name = dataGridView1.CurrentRow.Cells[0].Value.ToString() + ” ” + dataGridView1.CurrentRow.Cells[1].Value.ToString();

    for (i = 0; i <= dataGridView2.RowCount – 2; i++)
    {
    for (j = 0; j <= dataGridView2.ColumnCount – 1; j++)
    {
    xlWorkSheet.Cells[i + 1, j + 1] = dataGridView2.Rows[i].Cells[j].Value.ToString();
    }
    }

    xlWorkBook.SaveAs(@"D:\Akademi_Giris_Cikis.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);

    xlWorkBook.Close(true, misValue, misValue);
    xlApp.Quit();

    releaseObject(xlWorkSheet);
    releaseObject(xlWorkBook);
    releaseObject(xlApp);
    MessageBox.Show("D'ye kaydedildi");

  • Teşekkür ederim allah razı olsun iyi çalışmalar dilerim

  • Arkadaşlar işin içinden çıkamadığım bir durum var.

    “Exception from HRESULT: 0x800A03EC” hatası alıyorum. bu hata ile ilgili neredeyse hemen hiç döküman ve kayıt bulamadım. bir arkadaş bu hatayı aldığını söylemiş ama çözüm bulabildi mi? ne yapmalıyım. Yardım için şimdiden teşekkürler..

  • Yüksel Erol :
    Excel versiyon sorunu olabilir.

  • Datagridview üstünde başlangıç bitiş tarihi diye c# form da görüntülediğim değerler var bu değerleri de excele elimdeki taslağa uygun bir biçimde atamam lazım mümkün müdür? nasıl bir yol izlememi önerirsiniz.

  • hocam ben datagridview den excele verileri aktarıyorum. fakat tarihler sayı olarak gösteriyor. onları düzeltmek için range.NumberFormat = “dd.MM.YYYY”;
    kodunu kullanıyorum. fakat bu seferde sayı sutunu bozuluyor. sayıları 11316+13 gibi bişey gösteriyor. Nasıl düzeltebilirim ?

  • Visual Studyo nun hangi sürümünü kullanıyorsunuz ve excel de hangi sürüm
    söylerseniz belki hata almam

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir