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!
Um comentário:
Ok. Funcionou....
Postar um comentário