Skip to content
Skip to content
CTASoftware Blog

Para Desenvolvedores De Software

  • Sobre Mim
← Como ativar o “Salvar e Sair” abas no Firefox
Como Verificar o tipo do objeto em C# →
-->

Classe para exportar GridView para Excel

Posted on 14 de abril de 2012 by Everton Gonçalves

Essa semana tive que exportar os dados de uma GridView para uma planilha Excel, bom… sabia que não era algo muito complicado, mas também nunca tinha feito, sendo assim realizei uma busca no grande mestre Google e encontrei uma classe que me atendeu muito bem. Fácil e descomplicado.

using

using System;

using System.Data;

using System.Configuration;

using System.IO;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

namespace SGM.CTA.Web.UI

{

publicclassGridViewExportUtil

{

///<summary>

/// Realiza a exportao de grid para Excell

///</summary>

///<param name=”fileName”>Nome do Arquivo</param>

///<param name=”gv”>GridView preenchida com os dados necessrios</param>

publicstaticvoid Export(string fileName, GridView gv)

{

HttpContext.Current.Response.Clear();

HttpContext.Current.Response.AddHeader(

“content-disposition”, string.Format(“attachment; filename={0}”, fileName));

HttpContext.Current.Response.ContentType =

“application/ms-excel”;

using (StringWriter sw = newStringWriter())

{

using (HtmlTextWriter htw = new HtmlTextWriter(sw))

{

//  Create a form to contain the grid

Table table =

new Table();

//  add the header row to the table

if (gv.HeaderRow != null)

{

//adiciona a cor

gv.HeaderRow.BackColor = System.Drawing.Color.AliceBlue;

//Prepara informao header

GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);

table.Rows.Add(gv.HeaderRow);

}

//  add each of the data rows to the table

foreach (GridViewRow row in gv.Rows)

{

GridViewExportUtil.PrepareControlForExport(row);

table.Rows.Add(row);

}

//  add the footer row to the table

if (gv.FooterRow != null)

{

GridViewExportUtil.PrepareControlForExport(gv.FooterRow);

table.Rows.Add(gv.FooterRow);

}

//  render the table into the htmlwriter

table.RenderControl(htw);

//  render the htmlwriter into the response

HttpContext.Current.Response.Write(sw.ToString());

HttpContext.Current.Response.End();

}

}

}

///<summary>

/// Replace any of the contained controls with literals

///</summary>

///<param name=”control”></param>

privatestaticvoid PrepareControlForExport(Control control)

{

for (int i = 0; i < control.Controls.Count; i++)

{

Control current = control.Controls[i];

if (current is LinkButton)

{

control.Controls.Remove(current);

control.Controls.AddAt(i,

new LiteralControl((current as LinkButton).Text));

}

elseif (current is ImageButton)

{

control.Controls.Remove(current);

control.Controls.AddAt(i,

new LiteralControl((current as ImageButton).AlternateText));

}

elseif (current is HyperLink)

{

control.Controls.Remove(current);

control.Controls.AddAt(i,

new LiteralControl((current as HyperLink).Text));

}

elseif (current is DropDownList)

{

control.Controls.Remove(current);

control.Controls.AddAt(i,

new LiteralControl((current as DropDownList).SelectedItem.Text));

}

elseif (current is CheckBox)

{

control.Controls.Remove(current);

control.Controls.AddAt(i,

new LiteralControl((current as CheckBox).Checked ? “True” : “False”));

}

if (current.HasControls())

{

GridViewExportUtil.PrepareControlForExport(current);

}

}

}

}

}

 

Para utilizar no seu evento do botão você pode adicionar

GridViewExportUtil.Export(“Usuarios.xls”, this.nome_da_gridview);

 

Dúvidas, entrem em contato

PS: Dificil postar um código aqui no WordPress, ficou um tanto confuso, mas nada dificil de entender!

 

Compartilhe isso:

  • Clique para compartilhar no Twitter(abre em nova janela)
  • Clique para compartilhar no Facebook(abre em nova janela)
  • Clique para compartilhar no WhatsApp(abre em nova janela)
  • Clique para compartilhar no Telegram(abre em nova janela)
  • Clique para compartilhar no LinkedIn(abre em nova janela)
  • Clique para enviar um link por e-mail para um amigo(abre em nova janela)

Relacionado

About Everton Gonçalves

http://www.ctasoftware.com.br
View all posts by Everton Gonçalves
This entry was posted in .NET and tagged .NET, C#. Bookmark the <a href="https://www.ctasoftware.com.br/blog/classe-para-exportar-gridview-para-excel/" title="Permalink to Classe para exportar GridView para Excel" rel="bookmark">permalink</a>.
← Como ativar o “Salvar e Sair” abas no Firefox
Como Verificar o tipo do objeto em C# →

Deixe um comentário Cancelar resposta

Você precisa fazer o login para publicar um comentário.

© 2026 | Blog info WordPress Theme | By Bharat Kambariya