Muitas vezes precisamos exportar os dados de uma consulta SQL para uma planilha do Excel e para facilitar esse trabalho podemos fazer assim:
Dados da consulta SQL -> DataSet -> GridView -> XLS.
using System.IO;
using System.Data;
using System.Data.SqlClient;
...
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection Conn = new SqlConnection(sConnectionString))
{
SqlCommand cmd = new SqlCommand("SELECT nome, email FROM usuarios", Conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "contato");
DataSetParaExcel(ds, "planilia.xls");
}
}
public void DataSetParaExcel(DataSet ds, string sNome)
{
//Limpar o conteudo
Response.Clear();
//Seta o ContentType para xls
Response.ContentType = "application/vnd.ms-excel";
//Seta o tipo e o nome do arquivo
Response.AddHeader("Content-Disposition", "attachment;filename=" + sNome);
//Abaixo codifica os caracteres para o alfabeto latino
Response.ContentEncoding = System.Text.Encoding.GetEncoding("Windows-1252");
Response.Charset = "ISO-8859-1";
//Desabilita o ViewState
EnableViewState = false;
// Cria o StringWriter
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
//Cria um GridView
GridView gv = new GridView();
gv.DataSource = ds.Tables[0];
gv.DataBind();
//Renderiza
gv.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
}
}