Microsoft Excel è un software di foglio di calcolo che consente di inserire e gestire grandi quantità di dati nei fogli di lavoro. Se si desidera trasferire dati in Excel da un database, Visual Basic è un linguaggio di programmazione di Microsoft che consente di copiare il contenuto di un dataset in un file di Excel. Visual Basic è stato progettato per i programmatori principianti e viene utilizzato principalmente per sviluppare e personalizzare le applicazioni di Windows come Word, PowerPoint ed Excel.
Istruzioni
1
Creare un nuovo file di classe nel progetto chiamato "DataTableHelper.vb".
2
Copiare il seguente nel nuovo file:
Imports System
Imports System. Data
Imports System.IO
Public Class DataTableHelper
'
' Can stream DataTable to Browser, directly, you need to set
'
' Response.Clear()
VAI
' Response.Buffer= true
VAI
' Response.ContentType = \"application/vnd.ms-excel\"
VAI
' Response.AddHeader(\"Content-Disposition\", \"inline;filename=Clientes.xls\");
' Response.Charset = \"\"
VAI
' this.EnableViewState = false
' ACTUAL CODE
' ProduceCSV(dt, Response.Output, true)
VAI
'
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
Regione \"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
Regione di fine
End Function
end class '
3
Eseguire il seguente codice per utilizzare la nuova classe e vedere l'output csv nella console:
Dim dt As DataTable = ds. Tables(0)
Dim sWriter come IO. StreamWriter = New IO. StreamWriter(\"c:\yourCSVFile.csv\")
DataTableHelper.ProduceCSV (dt, sWriter, True)
Consigli & Avvertenze
- È possibile l'uscita a qualsiasi stream, TextWriter, quale la Console o una risposta HTTP.