Exportando dados de uma página ASP.NET para Excel

Exportando dados de uma página ASP.NET para Excel

Constantemente precisamos exportar um grid ou um DataSet para excel segue abaixo duas funçoes que podem resolver o problema de vocês:

 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
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados