Criação do método principal: Exportação de dados de GridView para Excel e Word – Parte 1

Veja neste artigo como exportar dados de um gridview para arquivos Excel e Word. Veremos um exemplo bem simples utilizando recursos do próprio .Net para realizar a exportação.

Olá a todos.

 

Neste artigo veremos como exportar dados contidos em um GridView para documentos do tipo Word e Excel.

 

Nosso exemplo será bastante simples, pois utilizaremos recursos do próprio .Net para realizarmos a exportação.

 

Crie um projeto do tipo Web Application com uma página – Default.aspx e uma classe – Exporter.cs.

 

A página Default.aspx conterá os controles:

 


 

 

Este GridView está vinculado à um SqlDataSource que contem um select simples, o que faz com que o GridView seja preenchido com os dados de uma tabela ao executar a aplicação. Aqui o leitor poderá fazer o mesmo procedimento ou utilizar outras maneiras de preencher o GridView.

 

Vamos iniciar a codificação de nossa classe que será a responsável ela exportação.

 

Primeiramente ver as referências necessárias:

 

using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO;

 

Faremos a exportação para dois  tipos de arquivos – Word e Excel. Sabendo disso podemos criar um Enum de nome FileType, que refletirá os dois tipos de arquivos suportados para a exportação:

public enum FileType { Excel = 0, Doc = 1 }


Agora faremos um método privado que fará a exportação propriamente dita.

private static void ExportGrid(GridView pGrid, FileType pType, string pFileName) { string ext = ""; switch (pType) { case FileType.Excel: ext = ".xls"; break; case FileType.Doc: ext = ".doc"; break; } System.Web.UI.Page page = new Page(); string attachment = "attachment; filename=" + pFileName + ext; HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.AddHeader("content-disposition", attachment); HttpContext.Current.Response.ContentType = "application/ms-excel"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); HtmlForm form = new HtmlForm(); Panel pan = new Panel(); pan.Style.Add(HtmlTextWriterStyle.TextAlign, "center"); pan.Controls.Add(pGrid); form.Controls.Add(pGrid); page.Controls.Add(form); form.RenderControl(htw); HttpContext.Current.Response.Write(sw.ToString()); HttpContext.Current.Response.End(); }

 

Basicamente esse método recebe um GridView, um Enum do tipo FileType e uma string correspondente ao nome do arquivo que será gerado. De acordo com o Enum FileType, é escolhida uma extensão para o arquivo, definindo assim o tipo de arquivo a ser criado. Posteriormente são criados controles do tipo Panel e HtmlForm, sendo que o GridView passado como parâmetro será adicionado ao Panel e este será adicionado ao HtmlForm. Com o HtmlForm preenchido com o Panel contendo o GridView, mandamos renderizar o Form para finalmente chamarmos o objeto HttpResponse para gerar o arquivo e dar a opção de download deste.

 

Na próxima parte do artigo, criaremos alguns métodos complementares que serão necessários para a exportação. Até lá.

 

Artigos relacionados