Foros del Web » Programando para Internet » ASPX (.net) »

Exportar GridView a CSV

Estas en el tema de Exportar GridView a CSV en el foro de ASPX (.net) en Foros del Web. Estimados tengo el siguiente problema; estoy tratando de exportar un GridView a un archivo CSV en esta url Código HTML: http://www.elguille.info/colabora/puntonET/jmdmpolo_CSV.htm aprendi como hacerlo puedo ...
  #1 (permalink)  
Antiguo 03/02/2010, 19:43
 
Fecha de Ingreso: noviembre-2005
Mensajes: 70
Antigüedad: 18 años, 5 meses
Puntos: 1
Exportar GridView a CSV

Estimados tengo el siguiente problema;
estoy tratando de exportar un GridView a un archivo CSV

en esta url
Código HTML:
http://www.elguille.info/colabora/puntonET/jmdmpolo_CSV.htm
aprendi como hacerlo

puedo generar la data separado por coma (",") pero no puedo generar el CSV para luego descargarlo

el error que me tira es "Property evaluation failed"

ha!! los parametros de entradas de la funcion que describo a continuacion estan bien pero, la funcion no hace lo que debe hacer que seria "fuerza la descarga a disco e impide que se visualize el resultado de la conversión a CSV en el propio explorador."

Private Sub DescargaCSV(ByVal pCSV As String, ByVal pNombreCSV As String)

'Obtiene la respuesta actual
Dim response As System.Web.HttpResponse = System.Web.HttpContext.Current.Response
Try
'Borra la respuesta
response.Clear()
response.ClearContent()
response.ClearHeaders()

'Tipo de contenido para forzar la descarga
response.ContentType = "application/octet-stream"
response.AddHeader("Content-Disposition", "attachment; filename=" & pNombreCSV)

'Convierte el string a array de bytes
Dim buffer(Len(pCSV)) As Byte
Dim mContador As Long = 0
While mContador < Len(pCSV)
buffer(mContador) = Asc(Mid(pCSV, mContador + 1, 1))
mContador = mContador + 1
End While

'Envia los bytes
response.BinaryWrite(buffer)
response.End()
Catch ex As Exception
Dim sss As String = ex.Message
End Try

End Sub
  #2 (permalink)  
Antiguo 04/02/2010, 09:33
 
Fecha de Ingreso: noviembre-2005
Mensajes: 70
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Exportar GridView a CSV

Estimados, no arregle el problema pero vi un camino alternativo para hacerlo

repasemos los pasos

1.- cargar un datagrid
2.- generar una matriz con los datos del datagrid separados por el delimitador ";"
3.- crear el archivo CSV
4.- por ultimo, el archivo generado debe ser descargado (esto aun no lo he implementado pero hay varias maneras que se describen en la web)

el paso 1 se describe
Código HTML:
http://www.elguille.info/colabora/puntonET/jmdmpolo_CSV.htm
el paso 2 y 3 .. lo realiza la funcion
Código:
ConvierteCSV
la variable
Cita:
pDatos
es de tipo DataSet, generada en el paso1
la variable
Cita:
ruta
es un string y es una variable declarada como publica
Cita:
Public ruta As String = "c:\datos.csv"
aui va la funcion;

Private Function ConvierteCSV(ByRef pDatos As DataSet, _
Optional ByVal pDelimitadorColumnas As String = ";", _
Optional ByVal pDelimitadorRegistros As String = vbNewLine) As String

'Variables Locales
Dim mSalida As String = ""
Dim mRegistro As String
Dim mContadorRegistros As Integer = 0
Dim mContadorColumnas As Integer = 0
Dim mValor As String = ""
Dim mNombreColumna As String = ""


'variables archivos CSV
Dim strStreamW As Stream
Dim strStreamWriter As StreamWriter
strStreamW = File.Create(ruta)

'Solo si hay datos
If Not IsNothing(pDatos) Then
If pDatos.Tables.Count > 0 Then

'fila de titulos de columna
mContadorColumnas = 0
mRegistro = ""
'para cada columna
While mContadorColumnas < pDatos.Tables(0).Columns.Count

mNombreColumna = pDatos.Tables(0).Columns(mContadorColumnas).Column Name

If mRegistro <> "" Then
mRegistro = mRegistro & pDelimitadorColumnas
End If

mValor = """" & mNombreColumna & """"
mRegistro = mRegistro & mValor

mContadorColumnas = mContadorColumnas + 1

End While
mSalida = mSalida & mRegistro

'procesa los registros del dataset
While mContadorRegistros < pDatos.Tables(0).Rows.Count
If mSalida <> "" Then
mSalida = mSalida & pDelimitadorRegistros
End If
mRegistro = ""
mContadorColumnas = 0
'para cada columna
While mContadorColumnas < pDatos.Tables(0).Columns.Count
If mRegistro <> "" Then
mRegistro = mRegistro & pDelimitadorColumnas
End If

mValor = pDatos.Tables(0).Rows(mContadorRegistros)(mContado rColumnas)
If InStr(mValor, pDelimitadorColumnas) > 0 Then
mValor = """" & mValor & """"
End If
mRegistro = mRegistro & mValor
mContadorColumnas = mContadorColumnas + 1
End While
'añade el registro
mSalida = mSalida & mRegistro
'************************************************* ********

strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.UTF8)
strStreamWriter.WriteLine(mSalida)

'************************************************* ********
mContadorRegistros = mContadorRegistros + 1
End While
End If
End If

strStreamWriter.Close()

Return mSalida
End Function

Etiquetas: csv, gridview, aspx
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 17:23.