Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/02/2010, 09:33
CarlosFran
 
Fecha de Ingreso: noviembre-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
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