.NET Conversions (vs 2003) - DataTable CSV Export
DataTable CSV Export - C# to VB.NET
Synopsis:
The code listed below is a simple class used to save / export an ado.net dataTable to CSV(comma separated values) format. CSV is simply a comma delimited format. To use the "How to Use" portion of the code replace the sql statement and the connectionstring text with valid information. (The original article and C# code can be found at http://www.dotnetspider.com/kb/Article963.aspx and was submitted by Abishek Bellamkonda)
Solution:
Download :DataTableHelper.vb
complete VS solution
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) 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) As String For i = 0 To dt.Columns.Count 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 classHow To Use: (Windows Form with one Button named btnTest and Northwind sample database)
Private Sub btnTest_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnTest.Click Dim conn As New SqlClient.SqlConnection Dim da As New SqlClient.SqlDataAdapter Dim cmdSel As New SqlClient.SqlCommand("Select * FROM PRODUCTS") Dim ds As New DataSet conn.ConnectionString = "connectionstringinfo+initial catalog=Northwind" da.SelectCommand = cmdSel cmdSel.Connection = conn conn.Open() da.Fill(ds) Dim dt As DataTable = ds.Tables(0) DataTableHelper.ProduceCSV(dt, Console.Out, True) End Sub