CSV-Datei in Klassen importieren

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Unter Access war es einfach: Dort haben wir eine CSV-Datei oder auch Excel-Tabellen einfach als verknüpfte Tabelle eingebunden und konnten dann direkt auf die Daten zugreifen. Beispielsweise, um diese dann per Anfügeabfrage in die Zieltabelle zu schreiben. Unter Entity Framework ist das so nicht möglich. Natürlich könnte man das Öffnen der Datei von Hand realisieren und die einzelnen Elemente einlesen. Aber es gibt einen anderen, effizienteren Weg, den wir mit einem NuGet-Paket namens CsvHelper beschreiten können. Diese Klasse erlaubt es, die Zeilen einer CSV-Datei automatisch in die Elemente auf Basis einer entsprechenden Klasse einzulesen. Oder Sie können damit auch die Zeilen durchlaufen und die Inhalte auf Basis des Indexes oder der Spaltenüberschrift einlesen und weiterverarbeiten.

CsvHelper hinzufügen

Das erwähnte NuGet-Paket CsvHelper fügen wir über den Nuget-Paket-Manager hinzu, den Sie über den Menüeintrag Projekt|NuGet-Pakete verwalten… öffnen. Hier wechseln Sie zum Bereich Durchsuchen und geben csvhelper in das Suchfeld ein. Es erscheint der Eintrag CsvHelper, den wir auswählen und mit einem Klick auf die Schaltfläche Installieren zum Projekt hinzufügen (siehe Bild 1).

Hinzufügen des CsvHelper-Pakets

Bild 1: Hinzufügen des CsvHelper-Pakets

Beispieldatei für den CSV-Import

Als Beispiel für die folgenden Importtechniken wollen wir eine CSV-Datei verwenden, die wir auf Basis der Tabelle tblKunden aus einer Access-Beispieldatenbank exportiert haben (siehe Bild 2).

Beispiel-Datei

Bild 2: Beispiel-Datei

Zielklasse für die Beispieldaten definieren

Das Ziel ist, die Daten aus einer .csv-Datei strukturiert zu erfassen, was in Form des Parsens direkt in Elemente einer Klasse geschehen soll. Dazu benötigen wir natürlich auch eine solche, und zwar eine namens Kunde. Diese definieren wir wie folgt:

Public Class Kunde
     Public Property KundeID As Long
     Public Property KundenCode As String
     Public Property Firma As String
     Public Property Kontaktperson As String
     Public Property Position As String
     Public Property Strasse As String
     Public Property Ort As String
     Public Property Region As String
     Public Property PLZ As String
     Public Property Land As String
     Public Property Telefon As String
     Public Property Telefax As String
End Class

Benutzeroberfläche für die Beispiele

Die Beispiele wollen wir in der Benutzeroberfläche der Anwendung darstellen. Dazu fügen wir einige Elemente hinzu:

  • Textfeld txtImportFile zur Eingabe/Anzeige der einzulesenden Datei
  • Schaltfläche btnChooseFile zum Öffnen eines Dateiauswahl-Dialogs
  • Schaltfläche btnImportNoAssignment zum Starten des ersten Beispiels für den Einlesevorgang
  • DataGrid dgrKunden zur Anzeige der eingelesenen Daten

Die Steuerelemente ordnen wir wie in Bild 3 an.

Benutzeroberfläche für die Beispiele

Bild 3: Benutzeroberfläche für die Beispiele

 

Schreibe einen Kommentar