DataGridView daki Verileri Excel e Kaydetme ve Excel den Veri Okuma
Öncelikle yapılması gereken;
1- Solution Explorer a sağ tıklayın. Add Reference kısmından COM sekmesini seçin. Bu
kısımdan Microsoft Excel Library nesnesini Ok butonuna tıklayarak projenize ekleyin.
2- Excel dosyasından DataGridView nesnemize
veri okuturken, küçük bir ayarlama yapıyoruz. Öncelikle Exceldeki oluşturduğumuz tabloya ad tanımlıyoruz.
Excel 2007 de Formuller kısmından Ad tranımlamadan bu işlemi yapabiliyoruz. Ben bu örnekte tablo ismini KisiBilgi olarak tanımladım.
Aşağıdaki şekilleri inceleyin.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace vc_excele_kaydetme
{
public partial class Form1 : Form
{
string[,] dizi;
string[] ad;
int satir, sutun;
Microsoft.Office.Interop.Excel.Application yeni = new Microsoft.Office.Interop.Excel.Application();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection baglan = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Northwind.mdb;");
System.Data.OleDb.OleDbDataAdapter adp = new System.Data.OleDb.OleDbDataAdapter();
adp.SelectCommand = new System.Data.OleDb.OleDbCommand("Select * From Customers", baglan);
System.Data.OleDb.OleDbCommandBuilder cb = new System.Data.OleDb.OleDbCommandBuilder(adp);
baglan.Open();
DataSet ds =new DataSet();
adp.Fill(ds);
satir = ds.Tables[0].Rows.Count;
sutun = ds.Tables[0].Columns.Count;
dizi = new string[satir, sutun];
for (int i = 0; i < satir; i++)
{
for (int j = 0; j < sutun; j++)
{
dizi[i, j] = Convert.ToString(ds.Tables[0].Rows[i][j]);
}
}
ad = new string[sutun];
for (int k = 0; k < sutun; k++)
{
ad[k] = ds.Tables[0].Columns[k].ColumnName.ToString();
}
dataGridView1.DataSource = ds.Tables[0];
baglan.Close();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
yeni.ActiveWindow.Close(null, null, null);
}
private void btnExceleKaydet_Click(object sender, EventArgs e)
{
yeni.Application.Workbooks.Add(true);
yeni.Visible = true;
Microsoft.Office.Interop.Excel.Worksheet sayfa = (Microsoft.Office.Interop.Excel.Worksheet)yeni.ActiveSheet;
sayfa.Name = "Users";
for (int k = 1; k <= sutun; k++)
{
sayfa.Cells[1, k] = ad[k - 1].ToString();
sayfa.Cells[2, k] = " ";
}
for (int i = 0; i < satir; i++)
{
int sat = i + 3;
for (int j = 0; j < sutun; j++)
{
int sut = j + 1;
sayfa.Cells[sat, sut] = dizi[i, j].ToString();
}
}
}
private void btnExcelOku_Click(object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection baglan = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\\Bilgiler.xls ; Extended Properties=Excel 8.0;");
baglan.Open();
System.Data.OleDb.OleDbCommand MyCommand = new System.Data.OleDb.OleDbCommand("SELECT * FROM KisiBilgi", baglan);
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter();
da.SelectCommand = MyCommand;
System.Data.DataTable ds = new System.Data.DataTable();
da.Fill(ds);
dataGridView1.DataSource = ds.DefaultView;
this.Text = "Excel dosyasından veri alındı";
baglan.Close();
}
}
}
//Bir sonraki makalede görüşmek üzere. Bahadır