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
la variable
es de tipo DataSet, generada en el paso1
la variable
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