C# Datagridviewde Veriyi İmport/Export Etme

C# ta datagridviewde görüntülenen verilerin herhangi bir Excel belgesine aktarma (export) ile başlayalım. Aktarma için aşağıdaki kodu herhangi bir butonun click özelliğine eklemeniz yeterli olacaktır. Projenizdeki datagridview adını koddaki gibi ‘dataGridView1‘ yaparsanız kod direk çalışacaktır.


Microsoft.Office.Interop.Excel.Application Excelver = new Microsoft.Office.Interop.Excel.Application();
 Excelver.Visible = true;
 Microsoft.Office.Interop.Excel.Workbook objBook = Excelver.Workbooks.Add(System.Reflection.Missing.Value);
 Microsoft.Office.Interop.Excel.Worksheet objSheet = (Microsoft.Office.Interop.Excel.Worksheet)objBook.Worksheets.get_Item(1);
 for (int i = 0; i < dataGridView1.Columns.Count; i++)
 {
 Microsoft.Office.Interop.Excel.Range objRange = (Microsoft.Office.Interop.Excel.Range)objSheet.Cells[1, i + 1];
 objRange.Value2 = dataGridView1.Columns[i].HeaderText;
 }
 for (int i = 0; i < dataGridView1.Columns.Count; i++)
 {
 for (int j = 0; j < dataGridView1.Rows.Count; j++)
 {
 Microsoft.Office.Interop.Excel.Range objRange = (Microsoft.Office.Interop.Excel.Range)objSheet.Cells[j + 2, i + 1];
 objRange.Value2 = dataGridView1[i, j].Value;
 }
 }

Kodu yazdığınızda Office yazan kısımda hata veriyorsa aşağıdaki resimdeki gibi Solution Explorer sekmesindeki References kısmına sağ tıklayıp Add Refences deyin.

Daha sonra açılan pencereden browse butonuna tıklayıp Excel programının exe’sini bulun. Programın exesi seçin. Daha sonra Excel exe’si size gözükecek tamam deyin ve referanslara eklenmiş olacak. Program şimdi sorunsuzca çalışabilir. (Eğer exe dosyasını bulamıyorsanız aşağıda anlatacağım kolayca bulabilirsiniz.)

Eğer exe dosyasını bulamıyorsanız kolayca nasıl bulacağınızı anlatayım. Başlata tıklayıp Excel yazın. Çıkan excel simgesine sağ tıklayın dosya konumunu aç deyin. Daha sonra yukardan dosya konumunu kopyalayın. Add references yaparkenki browse sekmesinde açılan yere konumu yapıştırın, exe dosyası karşınıza çıkacaktır.

Herhangi bir Excel belgesinden datagridviewe import etmek için öncelikle toolboxtan textbox ve openfiledialog ekliyoruz. Daha sonra aşağıdaki kodu yapıştırıp çalıştırıyoruz. Koda göre openfiledialog ve textboxt isimlerini düzenlemeyi unutmayın.  OleDbConnection ifadelerinde hata verirse kütüphanelere using System.Data.OleDb; yi ekleyerek çalıştırıyoruz.

Not: Kodun içindeki string sorguda [Arabalar$] yazan yer Excel belgesinde sol altta yazan sayfa adıdır. Bendeki arabalar olduğu için öyle yazdım. Siz kendi sayfa adınıza göre düzenleyebilirsiniz. Sonundaki $ işareti olmak zorunda sakın silmeyin.


open_file_dialog.ShowDialog();
textBox1.Text = open_file_dialog.FileName;
string dosya_yolu = open_file_dialog.FileName;

OleDbConnection deneme = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+dosya_yolu+"; Extended Properties = Excel 12.0");
deneme.Open();
string sorgu = "select * from [Arabalar$] ";
OleDbDataAdapter data_adaptor = new OleDbDataAdapter(sorgu, deneme);
deneme.Close();

DataTable dt = new DataTable();
data_adaptor.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Columns["sil"].Visible = false;
dataGridView1.Columns["guncelle"].Visible = false;
for (int i =0;i<=dt.Rows.Count-1;i++)
{
string cumle = "insert into tblArac values('" + dataGridView1.Rows[i].Cells["marka"].Value +"','" + dataGridView1.Rows[i].Cells["model"].Value + "','" + dataGridView1.Rows[i].Cells["plaka"].Value + "','" + dataGridView1.Rows[i].Cells["yakit_turu"].Value + "'," + dataGridView1.Rows[i].Cells["motor_gucu"].Value + "," + dataGridView1.Rows[i].Cells["tork"].Value + "," + dataGridView1.Rows[i].Cells["motor_hacmi"].Value + ",'" + dataGridView1.Rows[i].Cells["renk"].Value + "','" + dataGridView1.Rows[i].Cells["vites"].Value + "'," + dataGridView1.Rows[i].Cells["klima"].Value + "," + dataGridView1.Rows[i].Cells["ruhsat_no"].Value + "," + dataGridView1.Rows[i].Cells["sigorta"].Value + ",'"+ dataGridView1.Rows[i].Cells["muayne_bit_tar"].Value.ToString() + "'," + dataGridView1.Rows[i].Cells["ucret"].Value + "," + dataGridView1.Rows[i].Cells["kiraDurumu"].Value + ")";
SqlCommand komut = new SqlCommand(cumle,baglanti);
komut.ExecuteNonQuery();
}
MessageBox.Show("Yükleme İşlemi başarılı","Başarılı",MessageBoxButtons.OK,MessageBoxIcon.Information);

Eğer kodu çalıştırdığınızda The ‘Microsoft.ACE.OLEDB.12.0’ provider is not registered on the local machine. gibi bir hata alırsanız aşağıda verdiğim programı indirip kurun. Sorun düzelecektir.

Programı İndirmek İçin Tıklayın.

Furkan Aktaş

Bilgisayar Mühendisiyim. Microsoft MCSA Web Applications Sertifikasına Sahibim. Aktif iş hayatımda Full Stack .Net Developer olarak çalışmaktayım.

Bir cevap yazın

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