in Eski Blog Yazılarım

C# ile DataGridView den Excel ‘e

Yine bilgisayara dalıp servisi kaçırdım. Bu arada da DataGridView kontrolünden verileri alıp Excel’e gönderen bir class yazdım paylaşayım…

Microsoft.Office.Interop sınıfını kullanıyor. Bu araçla Microsoft Office’in tüm programlarını. Programatik olarak yönetebilirsiniz. Office kurulumunun içinden .NET kod desteğini seçmelisiniz. Eğer bu size zor geliyosa yada bilgisayarınızda office yoksa Primary Interop Assemblies redistributable package diye bir şey var. Onu yüklemelisiniz oda olmadı sadece Microsoft.Office.Interop.Excel.dll dosyasınıda programın çalıştığı aynı dizine koysanız yeterli olur.

O2003PIA yı Burdan Çekebilirsiniz.
Microsoft.Office.Interop.Excel.dll dosyasınıda Burdan çekin.
DataGrid den Excel’e Classını da Burdan çekin.

Ayrıca Kodu Aşağıda Vereyim…

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace DataGridViewdenExcele
{

class ogzDataGriddenExcele
{
private Excel.Application Excelim;
private Excel.Workbook CalismaKitabi;
private Excel.Worksheet CalismaSayfasi;

public void OkuVeYaz(DataGridView DisDataGrid,string CalismaSayfasiIsmi)
{
//DisDataGrid.AllowUserToAddRows = false;
Excelim = new Excel.ApplicationClass();
object SalakObje = System.Reflection.Missing.Value;
CalismaKitabi = Excelim.Workbooks.Add(SalakObje);
CalismaSayfasi = (Excel.Worksheet)CalismaKitabi.ActiveSheet;
CalismaSayfasi.Name = CalismaSayfasiIsmi;
int SutunIndex = 1;
int SatirIndex = 2;

// Sütunlar Yazılıyor.
foreach (DataGridViewColumn Sutun in DisDataGrid.Columns)
{
CalismaSayfasi.Cells[1, SutunIndex] = Sutun.HeaderText;
SutunIndex++;
}

// Satırlar Yazılıyor.
foreach (DataGridViewRow Satir in DisDataGrid.Rows)
{
for (int ci = 0; ci < DisDataGrid.Columns.Count; ci++)
{
CalismaSayfasi.Cells[SatirIndex, ci+1] = Satir.Cells[ci].Value.ToString();
}
SatirIndex++;
}

// Excel gösteriliyor
Excelim.Visible = true;

// Biçimlendirme
/*
CalismaSayfasi.get_Range("A1", "J1").EntireColumn.AutoFit();
CalismaSayfasi.get_Range("A1", "J1").Font.Bold = true;
CalismaSayfasi.get_Range("A1", "J1").RowHeight = 16;
CalismaSayfasi.get_Range("A1", "J1").Rows.VerticalAlignment = 2;
*/

//DisDataGrid.AllowUserToAddRows = true ;

}
}
}

Yorum Bırak

Comment