1
Crear un nuevo archivo de clase en el proyecto denominado " DataTableHelper.vb "
2
Copia el siguiente copia en el nuevo archivo : . Importaciones SystemImports System.DataImports System.IO
Public Class DataTableHelper
'' puede transmitir DataTable al navegador, directamente , debe establecer '' Response.Clear (); ' Response.Buffer = true; " Respuesta . ContentType = "application /vnd.ms -excel " ; ' Response.AddHeader ( "Content -Disposition ", " inline; filename = Clientes.xls "); ' Response.Charset = ""; " this.EnableViewState = false ' aCTUAL CODE ' ProduceCSV ( dt, Response.Output , true) ; '
Public Shared Sub ProduceCSV ( ByVal dt Como DataTable , _ByVal httpStream Como System.IO.TextWriter , WriteHeader ByVal As Boolean ) Dim i como j Int32Dim Como Int32If WriteHeader Entonces
Dim arr ( dt.Columns.Count ) As String
For i = 0 To dt.Columns.Count - . 1arr ( i) = dt.Columns ( i ) ColumnNamearr ( i) = GetWriteableValue ( arr ( i)) NexthttpStream.WriteLine End ( String.Join (", " , arr ) ) Si
Para j = 0 Para dt.Rows.Count - 1Dim dataArr ( dt. Columns.Count ) Como StringFor i = 0 To dt.Columns.Count - 1Dim o As Object = dt.Rows ( j ) ( i ) dataArr ( i) = GetWriteableValue ( o) NexthttpStream.WriteLine ( String.Join (", " , dataArr ) ) Siguiente
End Sub
# Region " CSVProducer " Public Shared Sub ProduceCSV ( ByVal dt Como DataTable , archivo _ByVal Como System.IO.StreamWriter , ByVal WriteHeader As Boolean )
Dim i como j Int32Dim Como Int32If ( WriteHeader ) ThenDim arr ( dt.Columns.Count ) Como StringFor i = 0 To dt.Columns.Count - . 1arr ( i) = dt.Columns ( i ) ColumnNamearr ( i ) = GetWriteableValue ( arr ( i)) Nextfile.WriteLine End ( String.Join (", " , arr ) ) Si
Para j = 0 Para dt.Rows.Count - dataArr 1Dim ( dt.Columns . Cuente ) Como StringFor i = 0 To dt.Columns.CountDim o As Object = dt.Rows ( j ) ( i ) dataArr ( i) = GetWriteableValue ( o) Nextfile.WriteLine ( String.Join (", " , dataArr ) ) SiguienteFin Sub
Public Shared Function GetWriteableValue ( ByVal o As Object ) Como StringIf o no es nada OrElse IsDBNull ( o) ThenReturn " " ElseIf ( o.ToString (). IndexOf (", ") = -1 ) ThenReturn o.ToString () ElseReturn " \\ " "+ o.ToString ( ) +" \\ ""
End Function IfEnd # End Región
fin de la clase
3
Ejecutar el siguiente código para utilizar la nueva clase y ver la salida csv en la consola: dt As DataTable = ds.Tables ( 0 ) swriter As IO.StreamWriter = New IO.StreamWriter ("c : \\ yourCSVFile.csv ") DataTableHelper.ProduceCSV ( dt, swriter , True)