none
Exportar gridview a excel en asp.net sobre c# RRS feed

  • Pregunta

  • Buenas, necesito exportar mi gridview a excel, tengo el siguiete codigo

        public void exporta_a_excel()
        {
    
            Response.Clear();
    
            Response.AddHeader("content-disposition", "attachment;filename=Catalogo_Productos.xls");
    
            Response.Charset = "";
    
            Response.ContentType = "application/vnd.xls";
    
            StringWriter StringWriter = new System.IO.StringWriter();
    
            HtmlTextWriter HtmlTextWriter = new HtmlTextWriter(StringWriter);
    
            GVempresa.RenderControl(HtmlTextWriter);
    
            Response.Write(StringWriter.ToString());
    
            Response.End();
    
    
        }

    pero al ejecutarlo me sale un error de que el gridview debe colocarse en una etiqueta tipo form con runat server, ocupo su ayuda para poder exportarlo a excel

    Gracias


    David Vega

    lunes, 26 de marzo de 2012 16:47

Respuestas

  • Hola,

    Lo que debes hacer es que al momento de paginar debes deshabilitar la paginación. Algo asi

    HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    GridView1.AllowPaging = false;
    BindData();

    Saludos,



    Jason Ulloa
    Mi Blog San José, Costa Rica

    lunes, 26 de marzo de 2012 18:13

Todas las respuestas

  • claro falta algo de codigo alli

    http://social.msdn.microsoft.com/Forums/es/netfxwebes/thread/f1c9fa68-9efe-4cf3-9519-1cb56bbc41e7

    veras aqui

    Exportar GridView a Excel

    que se crea un objeto page y form donde podrians el render

    Dim pagina As Page = New Page
    Dim form = New HtmlForm

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 26 de marzo de 2012 16:53
  • ya logre que me exportara, pero el problema me lo da cuando el gridview tiene paginancion, como hago para exportar el gridview con la paginancion??

    David Vega

    lunes, 26 de marzo de 2012 17:23
  • Hola,

    Lo que debes hacer es que al momento de paginar debes deshabilitar la paginación. Algo asi

    HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    GridView1.AllowPaging = false;
    BindData();

    Saludos,



    Jason Ulloa
    Mi Blog San José, Costa Rica

    lunes, 26 de marzo de 2012 18:13
  • Hola que tal yo uso este codigo espero que te siva


    private void exportar() 
        {
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename="+txtNumer.Text+".xls");
            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-excel";
             using (StringWriter sw = new StringWriter())
              {
                HtmlTextWriter hw = new HtmlTextWriter(sw);

                 To Export all pages
              GridView1.AllowPaging = false;
                this.llenaGrid();

               GridView1.HeaderRow.BackColor = Color.White;
                foreach (TableCell cell in GridView1.HeaderRow.Cells)
                {
                    cell.BackColor = GridView1.HeaderStyle.BackColor;
                }
                foreach (GridViewRow row in GridView1.Rows)
               {
                    row.BackColor = Color.White;
                    foreach (TableCell cell in row.Cells)
                    {
                        if (row.RowIndex % 2 == 0)
                        {
                            cell.BackColor = GridView1.AlternatingRowStyle.BackColor;
                        }
                        else
                        {
                            cell.BackColor = GridView1.RowStyle.BackColor;
                        }
                        cell.CssClass = "textmode";
                    }
                }

                GridView1.RenderControl(hw);

                style to format numbers to string
                string style = @"<style> .textmode { } </style>";
                Response.Write(style);
                Response.Output.Write(sw.ToString());
                Response.Flush();
                Response.End();
            }

    lunes, 20 de junio de 2016 13:02