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).
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).
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.
Bild 3: Benutzeroberfläche für die Beispiele