none
Exportar Gridview sin formato RRS feed

  • Pregunta

  •  

    Buenos días,

     

    Resulta que tengo este código para exportar un gridview a excel.

     

    Code Snippet

    Dim sb As New StringBuilder()

    Dim sw As New StringWriter(sb)

    Dim htw As New HtmlTextWriter(sw)

    Dim Page As New Page()

    Dim Form As New HtmlForm()

    GridView1.EnableViewState = False

    ' Deshabilitar la validaci¢n de eventos, s¢lo asp.net 2

    Page.EnableEventValidation = False

    '

    '­Realiza las inicializaciones de la instancia de la clase Page que requieran los dise¤adores RAD.

    Page.DesignerInitialize()

    Page.Controls.Add(Form)

    Form.Controls.Add(GridView1)

    Page.RenderControl(htw)

    Response.Clear()

    Response.Buffer = True

    Response.ContentType = "application/vnd.ms-excel"

    Response.AddHeader("Content-Disposition", "attachmentfilename=data.xls")

    Response.Charset = "UTF-8"

    Response.ContentEncoding = Encoding.Default

    Response.Write(sb.ToString())

    Response.End()

     

     

     

    Resulta que este código me exportar pero me exporta con el formato que tiene el gridview en mi página asp, me gustaría:

    1. Exportarlo sin dicho formato (colores, tipos letras etc)

    2. Exportarlo sin los textareas(Resulta que le agregué unos textareas a mi gridview para mostrar descripciones y cuando exporto me quedan en el excel.)

     

    Espero pronta ayuda Gracias.

    lunes, 8 de septiembre de 2008 14:23

Respuestas

  • Puedes ocultar la columna completa....
     
    Lo otro y es lo que yo hago es mandar todo a otra página y de esta pagina crear una Grilla dinamicamente... te mando un ejemplo:
     
     
    Code Snippet
    'Desde el ASPX
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="ExportarExcel.aspx.vb" Inherits="ExportarExcel" %>
     
    'DEsde el Codebehind
    Response.AddHeader("Content-Disposition", "attachment; filename=""Resultados.xls""")
    Response.ContentType = "application/vnd.ms-excel"
    Response.Charset = "windows-1252"
    Response.Write("<html>")
     
    Dim gvDetalle As New GridView
     
    objDS 'Objeto que vienen los datos
     
    Dim ColumnaNueva As BoundField, _
        Col As Integer
     

    'Crear Colummnas
    For Col = 0 To objDS.Tables(0).Columns.Count - 1
     
        ColumnaNueva = New BoundField
        ColumnaNueva.DataField = objDS.Tables(0).Columns(Col).Caption
     
        gvDetalle.Columns.Add(ColumnaNueva)
     
    Next
     
    gvDetalle.DataSource = objDS.Tables(0)
    gvDetalle.DataBind()
     
    Dim sr As New IO.StringWriter
     
    Dim htmltext As New HtmlTextWriter(sr)
    gvDetalle.RenderControl(htmltext)
    Dim s As String = sr.ToString
     
    Response.Write(s)
     
    Response.Write("</html>")

     

     

     
     
    Espero te sirva.
     
    • Marcado como respuesta xGs_Manco martes, 12 de julio de 2011 16:21
    lunes, 8 de septiembre de 2008 20:33
  • Yo tenia el mismo problema y lo que hice fue:

    1.- El Gridview lo llenada de un DataSource

    Entonces en mi codigo para exportarlo a excel

    Dim gv As New GridView        'Cree un nuevo GridView

    gv.DataSource = XXXXXXX     'Aqui puse el data source del Gridview Original

    y este nuevo GridView sin formato ni nada es el que mande a exportar y no el original... Espero te sirva...

    • Propuesto como respuesta Riskbreakers martes, 25 de enero de 2011 20:14
    • Marcado como respuesta xGs_Manco martes, 12 de julio de 2011 16:21
    martes, 25 de enero de 2011 20:01

Todas las respuestas

  • Quita las hojas de estilos de esa grilla...
     
     
    lunes, 8 de septiembre de 2008 18:33
  • y lo de los textboxes multilinea.

    lunes, 8 de septiembre de 2008 19:09
  • Visible = False
     
    Smile
     
    Dejalos en modo invisible
     
    lunes, 8 de septiembre de 2008 19:50
  •  

    Y como hago para ocultarlos si están dentro del gridview (convertidos en un template) además yo necesito que me pase el texto que hay dentro de los texboxes pero el texbox no.

     

     

     

    lunes, 8 de septiembre de 2008 19:58
  • Puedes ocultar la columna completa....
     
    Lo otro y es lo que yo hago es mandar todo a otra página y de esta pagina crear una Grilla dinamicamente... te mando un ejemplo:
     
     
    Code Snippet
    'Desde el ASPX
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="ExportarExcel.aspx.vb" Inherits="ExportarExcel" %>
     
    'DEsde el Codebehind
    Response.AddHeader("Content-Disposition", "attachment; filename=""Resultados.xls""")
    Response.ContentType = "application/vnd.ms-excel"
    Response.Charset = "windows-1252"
    Response.Write("<html>")
     
    Dim gvDetalle As New GridView
     
    objDS 'Objeto que vienen los datos
     
    Dim ColumnaNueva As BoundField, _
        Col As Integer
     

    'Crear Colummnas
    For Col = 0 To objDS.Tables(0).Columns.Count - 1
     
        ColumnaNueva = New BoundField
        ColumnaNueva.DataField = objDS.Tables(0).Columns(Col).Caption
     
        gvDetalle.Columns.Add(ColumnaNueva)
     
    Next
     
    gvDetalle.DataSource = objDS.Tables(0)
    gvDetalle.DataBind()
     
    Dim sr As New IO.StringWriter
     
    Dim htmltext As New HtmlTextWriter(sr)
    gvDetalle.RenderControl(htmltext)
    Dim s As String = sr.ToString
     
    Response.Write(s)
     
    Response.Write("</html>")

     

     

     
     
    Espero te sirva.
     
    • Marcado como respuesta xGs_Manco martes, 12 de julio de 2011 16:21
    lunes, 8 de septiembre de 2008 20:33
  • Yo tenia el mismo problema y lo que hice fue:

    1.- El Gridview lo llenada de un DataSource

    Entonces en mi codigo para exportarlo a excel

    Dim gv As New GridView        'Cree un nuevo GridView

    gv.DataSource = XXXXXXX     'Aqui puse el data source del Gridview Original

    y este nuevo GridView sin formato ni nada es el que mande a exportar y no el original... Espero te sirva...

    • Propuesto como respuesta Riskbreakers martes, 25 de enero de 2011 20:14
    • Marcado como respuesta xGs_Manco martes, 12 de julio de 2011 16:21
    martes, 25 de enero de 2011 20:01