Microsoft Excel är kalkylblad programvara som tillåter dig att mata in och hantera stora mängder data i kalkylblad . Om du vill överföra data till Excel från en databas , är Visual Basic Microsoft programmeringsspråk som tillåter dig att kopiera innehållet i en datamängd till en Excel -fil . Visual Basic har utformats för nybörjare programmerare och används främst för att utveckla och anpassa Windows-program som Word , PowerPoint och Excel . Instruktioner
1
Skapa en ny klass fil i ditt projekt kallat " DataTableHelper.vb "
2
Kopiera följande kopian i den nya filen : . Imports SystemImports System.DataImports System.IO
Public Class DataTableHelper
'' kan strömma DataTable till webbläsaren , direkt , måste du ställa '' Response.Clear ( ) ; ' Response.Buffer = true; ' Response . ContentType = " application /vnd.ms - excel " , " Response.AddHeader ( " Content - Disposition " , " inline ; filename = Clientes.xls " ) ; ' Response.Charset = " " ; ' this.EnableViewState = false " faktiskt KOD ' ProduceCSV ( dt , Response.Output , true ) ; "
Public Shared Sub ProduceCSV ( ByVal dt Som DataTable , _ByVal httpStream Som System.IO.TextWriter , ByVal WriteHeader As Boolean ) Dim i Som Int32Dim j Som Int32If WriteHeader Sedan
Dim arr ( dt.Columns.Count ) As String
För i = 0 Till dt.Columns.Count - . 1arr (i) = dt.Columns ( i) ColumnNamearr (i) = GetWriteableValue ( arr (i)) NexthttpStream.WriteLine ( String.Join ("," , arr ) ) End If
För j = 0 För att dt.Rows.Count - 1Dim dataArr (dt Columns.Count ) Som StringFor i = 0 Till dt.Columns.Count - 1Dim o As Object = dt.Rows ( j ) ( i) dataArr ( i) = GetWriteableValue ( o ) NexthttpStream.WriteLine ( String.Join ( " , " , dataArr ) ) Nästa
End Sub
# Region " CSVProducer " Public Shared Sub ProduceCSV ( ByVal dt Som DataTable , _ByVal fil Som System.IO.StreamWriter , ByVal WriteHeader As Boolean )
Dim i Som Int32Dim j Som Int32If ( WriteHeader ) ThenDim arr ( dt.Columns.Count ) Såsom StringFor i = 0 Till dt.Columns.Count - . 1arr (i) = dt.Columns ( i) ColumnNamearr (i ) = GetWriteableValue ( arr ( i) ) Nextfile.WriteLine ( String.Join ( " , " , arr ) ) End If
för j = 0 att dt.Rows.Count - 1Dim dataArr ( dt.Columns . räkna ) Som StringFor i = 0 Till dt.Columns.CountDim o As Object = dt.Rows ( j ) ( i) dataArr ( i) = GetWriteableValue ( o ) Nextfile.WriteLine ( String.Join ( " , " , dataArr ) ) NästaSlut Sub
Public Shared Function GetWriteableValue ( ByVal o As Object ) Som StringIf o Är Ingenting OrElse IsDBNull ( o ) ThenReturn " " ElseIf ( o.ToString ( ) . indexOf ( " , " ) = -1 ) ThenReturn o.ToString ( ) ElseReturn " \\ " " + o.ToString ( ) + " \\ " "
End IfEnd Function # End Region
end klass
3
Kör följande kod för att använda den nya klassen , och se csv utgång till konsolen : Dim dt som DataTable = ds.Tables ( 0 ) Dim swriter som IO.StreamWriter = ny IO.StreamWriter ( " c : \\ yourCSVFile.csv " ) DataTableHelper.ProduceCSV ( dt , swriter , Sant ) katalog