7 Temmuz 2010 Çarşamba

Div icerisinde yer alan verileri Excel e Aktarma

Merhaba,

Yazimin birinde bir arkadas div icerisdeki verileri excel'e export etmenin mumkun olup olmadigini sordu. Ben comment olarak arkadasa orada cevap verdim. Fakat search edince bulunabilmesi icin yeni bir baslik olusturayim dedim :) Simdi lafi fazla uzatmadan bu islemi nasil yapacagimiza gecelim.

Oncelikle dikkat edilmesi gereken yer div'e runat="server" ozelligini eklenmesi gerekmekte. Ayrica Fonksiyonun calisabilmesi icin asagidaki referanslari da eklenmesi gerekmekte.

Eklenecek olan Referanslar:
----------------------------
using Microsoft.Office.Core;
using System.IO;
using System.Diagnostics;
using System.Text;


Ayrica aşağıdaki kodun çalışabilmesi için aşağıdaki alanın htm tarafında en üstteki bölüme eklemek gerekiyor. Eklenecek olan alan kırmızı renkte olan alandır. Başındakli<%@ Page Language="C#" ifadesini ise ekelecek yeri karıştırmamak adına verdim.

<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true"

Fonksiyon:
-----------------
public void ExportDivToExcel(string filename, HtmlControl DivName)
{
string attachment = "attachment; filename='"+filename+"'";
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "application/ms-excel";

StringWriter sw = new StringWriter ();
HtmlTextWriter htw = new HtmlTextWriter (sw);
DivName.RenderControl(htw);

HttpContext.Current.Response.Write(HttpUtility.HtmlDecode(sw.ToString()));
HttpContext.Current.Response.End();
}


Asagidaki kısmı fonksiyonu cagiracagimiz button kontrolunden sonra eklememiz gerekmekte.

public override void VerifyRenderingInServerForm(Control control) //Bu kısım işlev geçerliliği için gerekli
{
}


===========
Not:
===========

Kod denendi ve çalışır durumda. Eğer sizde çalışmaması durumda;
  1. Solution Exp. da projenize sağ clikleyin.
  2. Açılan menüden Add Referance yi seçin. Sizi bir pencere karşılayacak..
  3. Açılan olan pencereden Com tabını tıkayın.
  4. Buradan Microsoft.Office.Interop.Excel ve Office ve System.Core u ekleyin.
  5. Bu eklemeleri yaptıktan sonra aşağıdakileri projenize import edin...

using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;
using System.IO;