You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.5 KiB
83 lines
2.5 KiB
Imports System
|
|
Imports System.Data
|
|
Imports System.IO
|
|
|
|
Public Class DataTableHelper
|
|
|
|
'
|
|
' Can stream DataTable to Browser, directly, you need to set
|
|
'
|
|
' Response.Clear();
|
|
' Response.Buffer= true;
|
|
' Response.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 As DataTable, _
|
|
ByVal httpStream As System.IO.TextWriter, ByVal WriteHeader As Boolean)
|
|
Dim i As Int32
|
|
Dim j As Int32
|
|
If WriteHeader Then
|
|
|
|
Dim arr(dt.Columns.Count) As String
|
|
|
|
For i = 0 To dt.Columns.Count - 1
|
|
arr(i) = dt.Columns(i).ColumnName
|
|
arr(i) = GetWriteableValue(arr(i))
|
|
Next
|
|
httpStream.WriteLine(String.Join(",", arr))
|
|
End If
|
|
|
|
For j = 0 To dt.Rows.Count - 1
|
|
Dim dataArr(dt.Columns.Count) As String
|
|
For i = 0 To dt.Columns.Count - 1
|
|
Dim o As Object = dt.Rows(j)(i)
|
|
dataArr(i) = GetWriteableValue(o)
|
|
Next
|
|
httpStream.WriteLine(String.Join(",", dataArr))
|
|
Next
|
|
|
|
End Sub
|
|
|
|
#Region "CSVProducer"
|
|
Public Shared Sub ProduceCSV(ByVal dt As DataTable, _
|
|
ByVal file As System.IO.StreamWriter, ByVal WriteHeader As Boolean)
|
|
|
|
Dim i As Int32
|
|
Dim j As Int32
|
|
If (WriteHeader) Then
|
|
Dim arr(dt.Columns.Count - 1) As String
|
|
For i = 0 To dt.Columns.Count - 1
|
|
arr(i) = dt.Columns(i).ColumnName
|
|
arr(i) = GetWriteableValue(arr(i))
|
|
Next
|
|
file.WriteLine(String.Join(",", arr))
|
|
End If
|
|
|
|
For j = 0 To dt.Rows.Count - 1
|
|
Dim dataArr(dt.Columns.Count - 1) As String
|
|
For i = 0 To dt.Columns.Count - 1
|
|
Dim o As Object = dt.Rows(j)(i)
|
|
dataArr(i) = GetWriteableValue(o)
|
|
Next
|
|
file.WriteLine(String.Join(",", dataArr))
|
|
Next
|
|
End Sub
|
|
|
|
Public Shared Function GetWriteableValue(ByVal o As Object) As String
|
|
If o Is Nothing OrElse IsDBNull(o) Then
|
|
Return ""
|
|
ElseIf (o.ToString().IndexOf(",") = -1) Then
|
|
Return o.ToString()
|
|
Else
|
|
Return "\"" + o.ToString() + " \ ""
|
|
|
|
End If
|
|
End Function
|
|
#End Region
|
|
|
|
End Class |