Foros del Web » Programación para mayores de 30 ;) » .NET »

Exportar gridview a excel

Estas en el tema de Exportar gridview a excel en el foro de .NET en Foros del Web. Hola a todos. Tengo un problemilla y no se como salir. Es referente a exportar datos de un gridview a excel. Tengo un código por ...
  #1 (permalink)  
Antiguo 13/09/2010, 09:15
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Exportar gridview a excel

Hola a todos. Tengo un problemilla y no se como salir. Es referente a exportar datos de un gridview a excel. Tengo un código por el cual un gridview me lo carga en una hoja excell nueva. Lo que necesito es que el código haga que la aplicación abra un archivo excel existente y formateado al efecto y lo rellene con los datos del gridview en cuestión. Está claro que el archivo excel existene tiene la misma estructura que el gridview en lo que se refiere a número de columnas, pero tiene los anchos de columna, el tipo de letra y tamaño distintos. Gracias.
  #2 (permalink)  
Antiguo 13/09/2010, 22:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 74
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Exportar gridview a excel

Primer paso abrir el archivo de excel
ya lo abres


paso #2
hacer modificaciones

'Para asignar un valor a una celda
' renglon y columna son numero

xlSheet.Cells(Renglon, columna).Value = "string"
xlSheet.Cells(Renglon, columna).Value = 3.0 'numero
xlSheet.Cells(Renglon, columna).Formula = 3.0 'numero



' Para cambiar el ancho de una columan
ApExcel.Columns(2).ColumnWidth = 10

Paos #3
almacenar los cambios
xlsBook.SaveAs(FileName:="c:\prueba.xls")

Saludos.
  #3 (permalink)  
Antiguo 15/09/2010, 10:24
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Exportar gridview a excel

Perdón por no contestar antes. He estado "desconectado". Gracias por la respuesta. La acabo de ver. Voy a ver si lo consigo.
  #4 (permalink)  
Antiguo 15/09/2010, 10:32
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Exportar gridview a excel

No funciona. Mejor pongo el código que tengo:

Protected Sub bexportar_Click(ByVal sender As Object, ByVal e As System.EventArgs)
ExportToExcel("Report.xls", GridView1)

End Sub
Private Sub ExportToExcel(ByVal strFileName As String, ByVal dg As GridView)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Me.EnableViewState = False
Dim oStringWriter As New System.IO.StringWriter
Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
GridView1.RenderControl(oHtmlTextWriter)
Response.Write(oStringWriter.ToString())
Response.[End]()

End Sub

Ese el código que tengo. Con el lo que hago es que al pulsar el boton "exportar", me abre una hoja de calculo y me pone en ella los datos que contiene el gridview con el formato del gridview. Lo que quiero es que al pulsar ese botón me abrá una hoja de calculo que ya existe y que tiene el formato que yo quiero y me ponga en ella los datos del gridview. Evidentemente, la estructura del gridview y la de la hoja de calculo es la misma, solo que la hoja de calculo ya tiene establecidos anchos y demás para hacer mas vistosos los datos del gridview. Espero haberme explicado mejor ahora. Gracias.
  #5 (permalink)  
Antiguo 16/09/2010, 17:14
 
Fecha de Ingreso: marzo-2007
Mensajes: 74
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Exportar gridview a excel

En VS ir a Websites/Proyecto -> Add References -> Pestaña COM y ahi elejir

Microsoft Ofice Interop
Microsoft Excel 11.0 Object Library



Una vez que ves todos los componentes COM, tienes que agregar:
1) Microsoft Office Interop 11.0
2) Microsoft Excel 11.0

Tras haber agregado las referencias en el código desde donde quieres trabajar con Excel debes agregar los siguientes Imports:

1) Imports System.Runtime.InteropServices.Marshal
2) Imports Microsoft.Office.Interop

A partir de ahora puedes trabajar con Excel sin problemas.

El modo de trabajo básicamente consiste en crear un objeto que de algún modo hará de aplicación Excel






Dim xlApp As Object
'Un Libro de Excel
dim xlBook As Excel.Workbook

' Una hoja del libro
Dim xlSheet As Excel.Worksheet


Inicializar Excel y obtener un objeto de Aplicacion
Set xlApp = Nothing
oXL = CreateObject("Excel.Application")



Dim ruta_excel as string
ruta_excel = "c:\x.xls"

Set xlApp = Nothing
Set xlApp = CreateObject("Excel.Application")
Set xlBook = Nothing
Set xlBook = xlApp.Workbooks.Open(ruta_excel)
Set xlSheet = xlBook.Worksheets(1)

'aqui lo muestras en pantalla
xlApp.Visible = True


'asi cambiamos los valores
xlApp.Cells(Y, X).Value="escribo en el archivo"
  #6 (permalink)  
Antiguo 18/09/2010, 15:07
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Exportar gridview a excel

Gracias por la respuesta. He usado el código que me das pero no consigo lo que quiero. lo que quiero es abrir una hoja ya hecha e introducirle los datos del gridview. La hoja ya tiene el formato que quiero, solo quiero que los datos del gridview se pongan en la hoja. ¿Hay alguna forma de hacerlo?
  #7 (permalink)  
Antiguo 18/09/2010, 19:01
 
Fecha de Ingreso: marzo-2007
Mensajes: 74
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Exportar gridview a excel

pon el codigo que modificaste para revisarlo
  #8 (permalink)  
Antiguo 21/09/2010, 13:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Exportar gridview a excel

El código que tengo es el de antes:

Protected Sub bexportar_Click(ByVal sender As Object, ByVal e As System.EventArgs)
ExportToExcel("Report.xls", GridView1)

End Sub
Private Sub ExportToExcel(ByVal strFileName As String, ByVal dg As GridView)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Me.EnableViewState = False
Dim oStringWriter As New System.IO.StringWriter
Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
GridView1.RenderControl(oHtmlTextWriter)
Response.Write(oStringWriter.ToString())
Response.[End]()

End Sub

Con este código lo que consigo es abrir un "nuevo" archivo excell y poner en él el contenido del GridView1.

Lo que quiero es abrir un archivo "ya existente" en el directorio de la aplicación y meter en él los datos del Gridview1, respetando el formato que previamente le he dado al archivo.

Por ejemplo, imagina que tengo en el directorio de la aplicación un archivo excell llamado "informe mensual". Lo que quiero es que desde el código se llame a ese archivo, se abra y se pongan en él los datos del Gridview, respetando los anchos de columnas, encabezados de columna, etc, del archivo "informe mensual".

No se si me he terminado de explicar bien, la verdad es un poco "particular" lo que pretendo, pero te lo agradecería si me pudieras orientar. Gracias.

Etiquetas: excel, gridview
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:24.