Microsoft Excel é um software de planilha eletrônica que permite a entrada e gerenciar grandes quantidades de dados em planilhas. Se você quiser transferir dados para o Excel a partir de um banco de dados , Visual Basic é uma linguagem de programação da Microsoft que permite que você copie o conteúdo de um conjunto de dados para um arquivo Excel. Visual Basic foi projetado para programadores iniciantes e é usado principalmente para desenvolver e personalizar os aplicativos do Windows , como Word, PowerPoint e Excel. Instruções
1
Crie um novo arquivo de classe em seu projeto chamado " DataTableHelper.vb "
2
Copie o seguinte cópia para o novo arquivo : . Importações SystemImports System.DataImports System.IO
Public Class DataTableHelper
'' pode transmitir DataTable ao navegador , diretamente, você precisa definir '' Response.Clear (); " Response.Buffer = true; " Response. ContentType = " application /vnd.ms -excel "; ' Response.AddHeader ( "Content-Disposition ", " in-line ; filename = Clientes.xls "); ' Response.Charset = ""; " this.EnableViewState = false ' REAL CÓDIGO ' ProduceCSV (dt, Response.Output , true); ' em
Public Shared Sub ProduceCSV (ByVal dt Como DataTable, _ByVal httpStream Como System.IO.TextWriter , ByVal writeHeader As Boolean ) Dim i As Int32Dim j Como Int32If writeHeader Então
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 ( String.Join ("," , arr) ) End If
Para j = 0 To 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 )) Next End
Sub
# Region " CSVProducer " Sub ProduceCSV Shared Pública ( ByVal dt Como DataTable, arquivo _ByVal Como System.IO.StreamWriter , ByVal writeHeader As Boolean ) < br >
Dim i As Int32Dim j 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 ( String.Join ("," , arr) ) End If
Para j = 0 To dt.Rows.Count - 1Dim dataArr ( dt.Columns . Contagem ) Como StringFor i = 0 To dt.Columns.CountDim o As Object = dt.Rows (j ) ( i) dataArr (i) = GetWriteableValue ( o) Nextfile.WriteLine ( String.Join ("," , dataArr ) ) NextEnd Sub
Public Shared GetWriteableValue Função ( ByVal o As Object ) Como StringIf o é nada OrElse IsDBNull ( o) ThenReturn " " ElseIf ( o.ToString (). IndexOf ( ",") = -1) ThenReturn o.ToString () ElseReturn "\\" "+ o.ToString () + " \\ " " Função
fim IfEnd # Region End
fim da classe
3
Execute o seguinte código para usar a nova classe, e ver a saída csv para o console : Dim dt as DataTable = ds.Tables (0) Dim swriter Como IO.StreamWriter = Novo IO.StreamWriter ( "c: \\ yourCSVFile.csv " ) DataTableHelper.ProduceCSV (dt, swriter , True)