terça-feira, 8 de dezembro de 2009

Exportar GridView para Excel Delphi ASP.NET

Olá pessoal!

Após muita consulta no Google não encontrei nenhum exemplo que funcionasse perfeitamente no Delphi para exportar os dados de uma Grid para o Excel, então adaptei alguns em VB, outros em C# e hoje de manhã finalmente o negócio funcionou. Agora estou aqui para compartilhar com vocês, segue o código fonte da função para exportar:


procedure Texportarexcel.Button1_Click(sender: TObject; e: System.EventArgs);
var
sw: System.IO.StringWriter;
htw: HtmlTextWriter;
sb: StringBuilder;
form: HtmlForm;
pagina: System.Web.UI.Page;
begin
sb := stringbuilder.Create;
sw := StringWriter.create(sb);
htw := HtmlTextWriter.create(sw);
pagina := System.Web.UI.Page.Create();
form := HtmlForm.create();
gvDados.EnableViewState := false;
pagina.EnableEventValidation := False;
pagina.DesignerInitialize();
pagina.Controls.Add(form);
form.Controls.Add(gvDados);
pagina.RenderControl(htw);
Response.Clear();
Response.ClearContent();
Response.Buffer := True;
Response.ContentType := 'application/vnd.ms-excel';
Response.AddHeader('Content-Disposition', 'attachment;filename=data.xls');
Response.Charset := 'UTF-8';
Response.ContentEncoding := Encoding.Default;
Response.Write(sb.ToString());
Response.&End;
end;


Nesta página que fiz para testar tenho um Button e uma GridView (gvDados), o código acima está no evento OnClick do Button1, antes de exportar a grid é óbvio que ela precisa ter dados, mas isto já não é o objetivo deste post, espero que o código seja útil para alguém, abraços!

Obs.: Não esqueçam de comentar e visitem o Blog do Bolívar!