vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Dateien lesen/schreiben   |   VB-Versionen: VB.NET03.07.08
DatagridView - Inhalt des DataGridViews in CSV Datei schreiben

Es wird der Inhalt eines DataGridViews in eine Datei, die sich im Anwendungspfad befindet, geschrieben.

Autor:   Heinz PrelleBewertung:  Views:  29.289 
www.visual-basic5.deSystem:  Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Das nachfolgende Beispiel füllt ein DataGridView-Control mit ein paar Test-Einträgen und exportiert den Inhalt dann per Button-Klick in eine CSV-Datei.

Hinweis:
Die Datei kann dann bspw. bequem in MS-Excel geöffnet werden:

  • MS-Excel starten
  • Datei öffnen
  • Dateityp "Textdateien"
  • Datei "grid_csv.csv" suchen und auf "öffnen" klicken
  • Im Dialogfenster "Textkonvertierungs-Assistent" die Einstellung "Getrennt" wählen und auf "Weiter" klicken
  • Auf der nächsten Seite die Einstellung "Komma" wählen und auf "Weiter" klicken
  • Im nächsten Dialogfenster auf "Fertig" klicken

Code für das Testprojekt
Benötigt wird ein DataGridView-Control, sowie ein Button.

Public Class Form1
 
  ' Datentabelle
  Private dt As DataTable
  ' Trennzeichen in der CSV Datei
  Private Const COLUMN_SEPERATOR As String = ","
  Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
 
    With Me
      CenterToScreen()
      ' DataTable erstellen, füllen und im DataGridView anzeigen
      dt = New DataTable()
      dt = .InitGrid()
      .DataGridView1.DataSource = dt
      .Text = "DataGridView Inhalt in CSV Datei exportieren"
      .Button1.Text = "Export"
     End With
  End Sub
  ''' <summary>
  ''' Testtabelle erstellen
  ''' </summary>
  Private Function InitGrid() As DataTable
    Dim dt As DataTable
    dt = New DataTable()
    Dim r As New Random
 
    Dim a() As String = {"Fritz", "Uwe", "Günther", "Boris", "Paul", "Sepp"}
    Dim b() As String = {"Walther", "Seeler", "Netzer", "Becker", "Breitner", "Meier"}
    With dt.Columns
      .Add(New DataColumn("Vorname", GetType(String)))
      .Add(New DataColumn("Name", GetType(String)))
      .Add(New DataColumn("Nummer", GetType(Integer)))
      For n As Integer = 0 To 5
        Dim dr As DataRow = dt.NewRow()
        dr("Vorname") = a(n)
        dr("Name") = b(n)
        dr("Nummer") = r.Next(10, 100)
        dt.Rows.Add(dr)
      Next
    End With
    Return dt
  End Function
  ''' <summary>
  ''' Inhalt des DataGridView in eine durch ein Komma 
  ''' getrennte CSV Datei exportieren
  ''' </summary>
  Private Function ExportDataGridContentToCSVFile( _
    ByVal Filename As String) As Boolean
    ' Die Variable Created übernimmt den Kontrollwert,
    ' ob die Datei angelegt wurde.
    Dim Created As Boolean = False
    ' Fehlerüberwachung einschalten
    Try
      ' StreamWriter initialisieren
      Using sw As IO.StreamWriter = New IO.StreamWriter( _
        Filename, False, System.Text.Encoding.Unicode)
 
        ' Spalten anlegen
        For n As Integer = 0 To Count
          sw.Write(dt.Columns(n))
          If (n < Count) Then
            sw.Write(COLUMN_SEPERATOR)
          End If
        Next
 
        ' Neue Zeile schreiben und...
        sw.Write(sw.NewLine())
 
        ' ... den Inhalt des Grids in eine Komma 
        ' getrennte Datei speichern.
        For Each dr As DataRow In dt.Rows()
          For n As Integer = 0 To Count
            If Not Convert.IsDBNull(dr(n)) Then
              sw.Write(dr(n).ToString())
            End If
            If (n < Count) Then
              sw.Write(COLUMN_SEPERATOR)
            End If
          Next
 
          ' Neue Zeile anlegen.
          sw.Write(sw.NewLine())
        Next
      End Using
 
      ' Wurde die Datei angelegt wird die Kontrollvariable 
      ' Created mit True initialisiert
      If IO.File.Exists(Filename) Then Created = True
 
    Catch ex As IO.IOException
      ' Eventuell auftretenden Fehler abfangen
      MessageBox.Show(ex.Message(), "Info - IOException")
    Catch ex As Exception
      MessageBox.Show(ex.Message(), "Info - Exception")
    End Try
 
    ' Funktionsrückgabe
    Return Created
  End Function
  ''' <summary>
  ''' Anzahl der in der Tabelle vorhanden Spalten ermitteln.
  ''' </summary>
  Private ReadOnly Property Count() As Integer
    Get
      Return dt.Columns.Count - 1
    End Get
  End Property
  ''' <summary>
  ''' Testpfad in dem die CSV Datei gespeichert wird.
  ''' </summary>
  Private ReadOnly Property Filename() As String
    Get
      Return IO.Path.Combine(Application.StartupPath, "grid_csv.csv")
    End Get
  End Property
  Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
 
    ' Prozeduraufruf mit den anzulegenden Dateinamen
    Dim IsCreated As Boolean = ExportDataGridContentToCSVFile(Filename)
    Select Case IsCreated
      Case True
        MessageBox.Show(IsCreated.ToString() & _
          " [Datei wurde angelegt]", "Info")
      Case Else
        MessageBox.Show(IsCreated.ToString() & _
          " [Datei konnte nicht angelegt werden]", "Info")
    End Select
  End Sub
End Class



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2019 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.