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
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.
@artur :
Aşağıdaki linki incele.
http://csharpvideoluders.com/videos/datagridviewdeki-kayitlari-excele-aktar-ders-111-c-csharp-access
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?
efe :
Aşağıdaki linki incele.
http://csharpvideoluders.com/videos/datagridviewdeki-kayitlari-excele-aktar-ders-111-c-csharp-access
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