public void ExportarParaExcel(Page pagina, DataSet ds, String filename)
{
DataGrid dg = new DataGrid();
dg.AutoGenerateColumns = true;
dg.DataSource = ds.Tables[0];
dg.DataBind();
pagina.Response.Clear();
pagina.Response.ContentType = "application/vnd.ms-excel";
pagina.Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".xls");
dg.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
dg.RenderControl(hw);
pagina.Response.End();
}
Ou para um CSV:
public void ExportarParaExcelCSV(Page pagina ,DataSet ds, String filename)
{
pagina.Response.Clear();
pagina.Response.Buffer = true;
//Response.Charset = "UTF-8";
pagina.Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename + ".csv");
pagina.Response.ContentEncoding = System.Text.Encoding.Default;
pagina.Response.ContentType = "application/ms-excel";
StringWriter stw = new StringWriter();
HtmlTextWriter htextw = new HtmlTextWriter(stw);
//Montar colunas
string tab = "";
DataTable dt = ds.Tables[0];
foreach (DataColumn dc in dt.Columns)
{
pagina.Response.Write(tab + dc.ColumnName);
tab = ";";
}
pagina.Response.Write("\r\n");
//Montar linhas
int i;
foreach (DataRow dr in dt.Rows)
{
tab = "";
for (i = 0; i < dt.Columns.Count; i++)
{
pagina.Response.Write(tab + dr[i].ToString());
tab = ";";
}
pagina.Response.Write("\r\n");
}
pagina.Response.End();
}
Até a próxima