none
Exportar a excel. RRS feed

  • Pregunta

  • La cuestión es simple tengo una una pagina con un  datagrid que muestra cierta información respecto a la compra, mi intención es enviar el contenido de ese datagrid mediante un mail tanto al comprador como al vendedor. el tema de los mail todo bien hasta logre hacer un attach. lo que se ocurrió seria exportar el datagrid a excel y mandar como attach el archivo generado. pero Como exporto a excel?

    Trabajo con Visual Studio 2008 framework 3.5 y VB.net

    jueves, 8 de abril de 2010 16:52

Respuestas

  • Hola, puedes hacerlo asi:

    Dim swriter As New StringWriter()
    Dim hwriter As New HtmlTextWriter(swriter)
    Dim frm As New HtmlForm()      
                With GridView
                    Page.Response.Clear()
                    Page.Response.ContentType = "application/vnd.xls"
                    Page.Response.AddHeader("content-disposition", "attachment;filename=excel.xls")

                    .Parent.Controls.Add(frm)
                    frm.Attributes("runat") = "server"
                    frm.Controls.Add(oControl)
                    frm.RenderControl(hwriter)
                    oPage.Response.Write(swriter.ToString())
                    oPage.Response.End()
                End With

    recuerda importar system.io

    jueves, 8 de abril de 2010 17:03
  • Hola!!

    Yo utilizo mucho este codigo funciona si utilizas el gridview que viene por default en Visual Studio, no funciona con el gridview de DevExpress(ASPxGridView ) por que no permite exportar el gridview con todo y los estilos aplicados. Ok espero y te se sea de ayuda.

     

            'StringBuilder representa una cadena de texto(caracteres) la cual puede se modificable
    Dim sb As StringBuilder = New StringBuilder()

    'StingWriter se usa para escribir información en una cadena, en este caso "sb" que representa_
    'la cadena StringBuilder.
    Dim sw As IO.StringWriter = New IO.StringWriter(sb)

    'HtmlTextWriter proporciona funciones de aplicación de formato que los controles de servidor utilizan al_
    'representar lenguaje de marcado de hipertexto en el cliente(mostar el gridview1 como control de servidor_
    'en excel).
    Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)

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


    'GridView1 sería el nombre de tu datagrid
    GridView1.EnableViewState = False

    pagina.EnableEventValidation = False
    pagina.DesignerInitialize()
    pagina.Controls.Add(form)
    form.Controls.Add(GridView1)
    pagina.RenderControl(htw)
    Response.Clear()
    Response.Buffer = True
    Response.ContentType = "application/vnd.ms-excel"

    'la siguiente linea es solo para establecer el nombre al nuevo archivo de excel creado. Puede ser cualquier valor.
     Response.AddHeader("Content-Disposition", "attachment;filename=Reporte Mensual(" & ASPxComboBox1.Value & " " & año & ").xls")

    Response.Charset = "UTF-8"

    Response.ContentEncoding = Encoding.Default
    Response.Write(sb.ToString())
    Response.End()

    Acuerdate del pegar el codigo dentro del Componente (boton) que exporta a excel y eliminar las etiquetas HTML (<br> )que aparecen arriba jaja.
    Espero te sirva!

    Saludos
    GDL

    jueves, 8 de abril de 2010 17:47

Todas las respuestas

  • Hola, puedes hacerlo asi:

    Dim swriter As New StringWriter()
    Dim hwriter As New HtmlTextWriter(swriter)
    Dim frm As New HtmlForm()      
                With GridView
                    Page.Response.Clear()
                    Page.Response.ContentType = "application/vnd.xls"
                    Page.Response.AddHeader("content-disposition", "attachment;filename=excel.xls")

                    .Parent.Controls.Add(frm)
                    frm.Attributes("runat") = "server"
                    frm.Controls.Add(oControl)
                    frm.RenderControl(hwriter)
                    oPage.Response.Write(swriter.ToString())
                    oPage.Response.End()
                End With

    recuerda importar system.io

    jueves, 8 de abril de 2010 17:03
  • hola

    por ahi algo como esto sea de utilidad

    Exportar GridView a Excel

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 8 de abril de 2010 17:16
  • Saludo ,

     

    mira este link

     

    http://csanchezg.spaces.live.com/blog/cns!41C0BFBBFE8E1519!178.entry?wa=wsignin1.0&sa=720539532

    enmanuel grullard 

    republica dominicana

    jueves, 8 de abril de 2010 17:24
    Moderador
  • Hola!!

    Yo utilizo mucho este codigo funciona si utilizas el gridview que viene por default en Visual Studio, no funciona con el gridview de DevExpress(ASPxGridView ) por que no permite exportar el gridview con todo y los estilos aplicados. Ok espero y te se sea de ayuda.

     

            'StringBuilder representa una cadena de texto(caracteres) la cual puede se modificable
    Dim sb As StringBuilder = New StringBuilder()

    'StingWriter se usa para escribir información en una cadena, en este caso "sb" que representa_
    'la cadena StringBuilder.
    Dim sw As IO.StringWriter = New IO.StringWriter(sb)

    'HtmlTextWriter proporciona funciones de aplicación de formato que los controles de servidor utilizan al_
    'representar lenguaje de marcado de hipertexto en el cliente(mostar el gridview1 como control de servidor_
    'en excel).
    Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)

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


    'GridView1 sería el nombre de tu datagrid
    GridView1.EnableViewState = False

    pagina.EnableEventValidation = False
    pagina.DesignerInitialize()
    pagina.Controls.Add(form)
    form.Controls.Add(GridView1)
    pagina.RenderControl(htw)
    Response.Clear()
    Response.Buffer = True
    Response.ContentType = "application/vnd.ms-excel"

    'la siguiente linea es solo para establecer el nombre al nuevo archivo de excel creado. Puede ser cualquier valor.
     Response.AddHeader("Content-Disposition", "attachment;filename=Reporte Mensual(" & ASPxComboBox1.Value & " " & año & ").xls")

    Response.Charset = "UTF-8"

    Response.ContentEncoding = Encoding.Default
    Response.Write(sb.ToString())
    Response.End()

    Acuerdate del pegar el codigo dentro del Componente (boton) que exporta a excel y eliminar las etiquetas HTML (<br> )que aparecen arriba jaja.
    Espero te sirva!

    Saludos
    GDL

    jueves, 8 de abril de 2010 17:47