Not : Bu yazıyı sitemiz için hazırlayan Serdar Büyüktemiz arkadaşımıza teşekkür ederiz.
Excel tartışmasız mükemmel bir program. Bence bu güne kadar geliştirilmiş en mükemmel uygulama. Adı da İngilizce “Excellent” kelimesinden türetilmiştir. Detaylarını bilip kullananlar üzerlerindeki işleri ona yıkar ve rahat ederler.
Excel aklınıza ne kadar firma geliyorsa hepsinde kullanılanda bir uygulamadır.
Kimisi Word kullanır gibi kullansa da :) neredeyse bütün firmalar Excel kullanır.
Yazdığımız uygulamalarda da zaman zaman Excel dosyası çıktısı vermek zorunda kalabiliriz. Bazı durumlarda kullandığımız class’ların (Mesela CrystalReport) Excel çıktısı veren metotları vardır. Ama olmadığı zaman nasıl yaparız. Onun için basit bir örnek yaptım.
C# içinde Excel kullanmamız gerekiyorsa, Excel library’sini referans olarak göstermemiz gerekiyor. “Add reference” kısmında “Com” sekmesinde kullanabileceğiniz Excel libraryleri göreceksiniz. Ofis 2003 çıktısı için Microsoft Excel 11.0 Object library’yi ekliyoruz. Birde Excel Com bir nesne, metotların aldığı bazı parametrelerde “Missing.Value” kullanmamız gerekiyor bunun için de Reflection ‘ı kullanacağımızı belirtmemiz gerekiyor.
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
Sonrasında yapmak istediklerimizi yazabiliriz.
Örnek’de bir excel dosyasını okumak ve içine bir şeyler yazmak canlandırılıyor. Örnek uygulamayı buradan indirebilirsiniz.
Aşağıda ise datagridden excel export etmeninkodları yer alıyor.
private void DataGridToExcel()
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Projects.xls");
Response.Charset = "iso-8859-9";
Response.ContentType = "application/vnd.xls";
Response.ContentEncoding = System.Text.Encoding.Default;
StringWriter stringWrite = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
DataGrid dg = new DataGrid();
dg.ID = "Deneme";
DataTable dt = new DataTable();
dt.Columns.Add("A");
dt.Columns.Add("B");
dt.Rows.Add("Deneme", "1");
dt.Rows.Add("Deneme", "2");
dg.DataSource = dt;
dg.DataBind();
dg.HeaderStyle.BackColor = System.Drawing.Color.White;
dg.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}
Kaynaklar