IRONXL VERWENDEN

Konvertieren einer CSV-Datei in eine Liste in C#

Veröffentlicht 27. Januar 2024
Teilen Sie:

In diesem Tutorial für Anfänger sehen wir uns an, wie man cSV-Dateien lesen in eine liste in C# unter Verwendung der IronXL bibliothek. Dies ist eines der grundlegendsten Dinge, die man in jeder Programmiersprache wissen muss, da CSV-Dateien eine sehr verbreitete Art sind, Daten zu speichern und sie von einem System oder einer Anwendung in eine andere zu übertragen. Wir behandeln alles von der Einrichtung Ihres Projekts bis zum effektiven Parsen von CSV-Dateien.

Konvertieren einer CSV-Datei in eine Liste in C#;

  1. Erstellen Sie ein C#-Konsolenprojekt in Visual Studio.

  2. Installieren Sie die C# CSV-Bibliothek mit NuGet Package Manager.

  3. Laden Sie die CSV-Datei mit der Methode WorkBook.LoadCSV.

  4. Datenwerte aus der Datei lesen und die Liste auffüllen.

  5. Drucken Sie die Liste auf der Konsole aus.

Ihr Projekt einrichten

Schritt 1: Erstellen eines neuen C#-Projekts

  1. Öffnen Sie Visual Studio: Starten Sie Visual Studio auf Ihrem Computer.

  2. Ein neues Projekt erstellen: Klicken Sie auf "Ein neues Projekt erstellen". Es öffnet sich ein Fenster, in dem Sie den Projekttyp auswählen können.

  3. Projekttyp auswählen: Wählen Sie "Console App" (.NET Core)"der Einfachheit halber als Projekttyp.

  4. Benennen Sie Ihr Projekt: Benennen Sie Ihr Projekt CSVFileReader.

  5. Speicherort wählen: Wählen Sie einen geeigneten Speicherort auf Ihrem Gerät, um dieses Projekt zu speichern.

  6. Projekt generieren: Klicken Sie auf "Erstellen", um Ihr neues C#-Projekt zu initialisieren.

Schritt 2: Installieren der IronXL-Bibliothek

  1. Öffnen Sie den NuGet-Paketmanager: Gehen Sie in Visual Studio in das Menü "Tools", wählen Sie dann "NuGet Package Manager" und wählen Sie "Manage NuGet Packages for Solution...".

  2. Suchen Sie nach IronXL: Klicken Sie auf die Registerkarte "Durchsuchen" und suchen Sie nach "IronXL.Excel"

    Konvertieren einer CSV-Datei in eine Liste in C#: Abbildung 1 - IronXL

  3. Installieren Sie IronXL: Suchen Sie das IronXL-Paket in den Suchergebnissen, wählen Sie es aus und klicken Sie auf "Installieren" Vergewissern Sie sich, dass Sie den Lizenzvereinbarungen zustimmen und überprüfen Sie die Änderungen.

  4. Prüfen Sie die Installation: Nach der Installation sollte IronXL in den Referenzen Ihres Projekts referenziert sein.

    Jetzt ist Ihr CSVFileReader-Projekt mit der IronXL-Bibliothek eingerichtet, und Sie sind bereit, CSV-Dateien in C# zu lesen und zu verarbeiten. Diese Einrichtung bildet die Grundlage für die CSV-Leseaufgaben, die wir in den folgenden Abschnitten dieses Lernprogramms durchführen werden.

Parsing und Verarbeitung von CSV-Dateien in C#;

Nachdem das Projekt eingerichtet und die IronXL-Bibliothek installiert ist, können wir uns nun auf das Parsen und Verarbeiten von CSV-Dateien konzentrieren. Wir werden in der Datei "Program.cs" arbeiten, die automatisch in Ihrem CSVFileReader-Projekt erstellt wird.

Schritt 1: Festlegen des Dateipfads

Bevor wir Daten lesen können, müssen wir wissen, wo sich unsere CSV-Datei befindet. Definieren Sie eine Variable in der Methode Main, um den Dateipfad zu speichern.

string filename = "csvfile.csv"; // Replace with your actual file path
string filename = "csvfile.csv"; // Replace with your actual file path
Dim filename As String = "csvfile.csv" ' Replace with your actual file path
VB   C#

Schritt 2: Laden der CSV-Datei

IronXL macht es einfach, eine CSV-Datei zu laden. Verwenden Sie die Methode WorkBook.LoadCSV, um die CSV-Datei in ein WorkBook-Objekt zu lesen.

var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
Dim csv = WorkBook.LoadCSV(filename)
VB   C#

Schritt 3: Definieren einer Datenstruktur

Erstellen Sie eine Klasse, die die Datenstruktur in Ihrer CSV-Datei darstellt. Wenn Ihre CSV-Datei zum Beispiel Informationen über Personen enthält, definieren Sie eine Klasse "Person" wie folgt:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class
VB   C#

Schritt 4: Parsing von CSV-Daten

In diesem Schritt wird die CSV-Datei geparst und eine "Liste" ausgefüllt` mit den Daten. Wir verwenden IronXL zum Lesen der CSV-Datei, und der Schlüssel dazu ist die korrekte Verarbeitung jeder Zeile der CSV-Datei unter Berücksichtigung von Kopfzeilen und potenziellen Leerzeilen. Hier finden Sie eine detaillierte Aufschlüsselung des Codes:

List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells [0].StringValue,
        Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells [0].StringValue,
        Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
Dim people As New List(Of Person)()
Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
For Each row In csv.WorkSheets (0).Rows
	If isFirstRow Then
		isFirstRow = False ' Set the flag to false after skipping the first row
		Continue For
	End If
	If row.IsEmpty Then
		Continue For ' Skip empty rows
	End If
	Dim cells = row.ToArray()
	Dim person As New Person() With {
		.Name = cells (0).StringValue,
		.Age = Integer.Parse(cells (1).StringValue)
	}
	people.Add(person)
Next row
VB   C#

Bei diesem Parsing-Prozess wird zunächst eine Liste<Person>um die geparsten Daten zu speichern und ein boolesches FlagisFirstRowzu verwenden, um die Kopfzeile der CSV-Datei zu überspringen. Dieforeach'-Schleife durchläuft jede Zeile der CSV-Datei. Bei der ersten Iteration wird die Kopfzeile identifiziert und übersprungen, um sicherzustellen, dass nur Datenzeilen verarbeitet werden. Anschließend wird jede Zeile mit row.IsEmpty überprüft, um sicherzustellen, dass sie nicht leer ist. Dieser Schritt ist wichtig, um Parsing-Fehler bei leeren Zeilen zu vermeiden.

Für jede Datenzeile konvertieren wir die Zeile in ein Array von Zellen (row.ToArray()`) und erstellen dann ein "Person"-Objekt mit diesen Daten. Es ist wichtig, die Datentypen korrekt zu analysieren und zu konvertieren, z. B. die Zeichenkette "Alter" in eine ganze Zahl umzuwandeln. Das geparste "Person"-Objekt wird dann zu unserer "Personen"-Liste hinzugefügt. Auf diese Weise wird sichergestellt, dass nur gültige Datenzeilen verarbeitet und gespeichert werden, so dass potenzielle Probleme wie nichtnumerische Zeichenfolgen in numerischen Spalten oder unerwartete leere Zeilen wirksam behandelt werden.

Schritt 5: Anzeige der Daten

Nach dem Parsen der CSV-Daten in unsere `Listder nächste wichtige Schritt besteht darin, die Daten anzuzeigen und zu überprüfen. So können wir nicht nur sicherstellen, dass unser Parsing erfolgreich war, sondern auch die Ausgabe beobachten und eine schnelle Überprüfung der Datenqualität durchführen. So können Sie dies umsetzen:

foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
For Each person In people
	Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
Next person
VB   C#

Hier ist der vollständige Program.cs-Code:

using IronXL;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string [] args)
    {
        string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
        var csv = WorkBook.LoadCSV(filename);
        List<Person> people = new List<Person>();
        bool isFirstRow = true; // Add a flag to check for the first row
        foreach (var row in csv.WorkSheets [0].Rows)
        {
            if (isFirstRow)
            {
                isFirstRow = false; // Set the flag to false after skipping the first row
                continue;
            }
            if (row.IsEmpty) continue; // Skip empty rows
            var cells = row.ToArray();
            var person = new Person()
            {
                Name = cells [0].StringValue,
                Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
            };
            people.Add(person);
        }
        foreach (var person in people)
        {
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}
using IronXL;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string [] args)
    {
        string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
        var csv = WorkBook.LoadCSV(filename);
        List<Person> people = new List<Person>();
        bool isFirstRow = true; // Add a flag to check for the first row
        foreach (var row in csv.WorkSheets [0].Rows)
        {
            if (isFirstRow)
            {
                isFirstRow = false; // Set the flag to false after skipping the first row
                continue;
            }
            if (row.IsEmpty) continue; // Skip empty rows
            var cells = row.ToArray();
            var person = new Person()
            {
                Name = cells [0].StringValue,
                Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
            };
            people.Add(person);
        }
        foreach (var person in people)
        {
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}
Imports IronXL

Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim filename As String = "C:\Users\tayya\Downloads\sample_data.csv" ' Replace with your actual file path
		Dim csv = WorkBook.LoadCSV(filename)
		Dim people As New List(Of Person)()
		Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
		For Each row In csv.WorkSheets (0).Rows
			If isFirstRow Then
				isFirstRow = False ' Set the flag to false after skipping the first row
				Continue For
			End If
			If row.IsEmpty Then
				Continue For ' Skip empty rows
			End If
			Dim cells = row.ToArray()
			Dim person As New Person() With {
				.Name = cells (0).StringValue,
				.Age = Integer.Parse(cells (1).StringValue)
			}
			people.Add(person)
		Next row
		For Each person In people
			Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
		Next person
	End Sub
End Class
VB   C#

Ausgabe des Codes

Wenn Sie die Datei ausführen, werden die Daten der Liste in der Konsole angezeigt:

Wie konvertiert man eine CSV-Datei in eine Liste in C#: Abbildung 2 - Listenausgabe

Umgang mit verschiedenen Datentypen

Bei der Verarbeitung verschiedener Datentypen in einer CSV-Datei ist es wichtig, die Parsing-Logik an den spezifischen Typ jeder Datenspalte anzupassen. Im Beispiel der Klasse "Person" ist "Name" eine Zeichenkette und kann mit "StringValue" direkt zugewiesen werden, während numerische Felder wie "Alter" mit "Int32.Parse" oder "Convert.ToInt32" von Zeichenketten in Ganzzahlen umgewandelt werden müssen. Dies ist wichtig, um Fehler bei der Typübereinstimmung zu vermeiden.

Für komplexere Datentypen, wie z.B. Datumsangaben, verwenden Sie DateTime.Parse, um String-Darstellungen von Datumsangaben in DateTime-Objekte zu konvertieren. Es ist wichtig, das in Ihrer CSV-Datei verwendete Datumsformat zu kennen und sicherzustellen, dass es mit dem erwarteten Format in Ihrem Code übereinstimmt. Inkonsistente Datumsformate können zu Parsing-Fehlern oder falscher Dateninterpretation führen.

Schlussfolgerung

Sie haben soeben gelernt, wie man mit IronXL in C# die Daten einer CSV-Datei liest, parst und anzeigt. Dieser Ansatz kann auf verschiedene Arten von Datenstrukturen und Dateiformaten angewendet werden. Dies ist also eine insgesamt nützliche Fähigkeit für jeden Entwickler, der C# als Hauptsprache seiner Wahl einsetzt.

IronXL bietet eine kostenloser Test damit die Nutzer die Funktionen kennenlernen können. Sobald die Testphase abgeschlossen ist, beginnt die Lizenzierung von IronXL zu einem Startpreis von $749.

Denken Sie daran, dass Ausnahmen und Randfälle behandelt werden müssen, um einen robusteren Code zu schreiben, insbesondere bei der Verwaltung verschiedener Datentypen und der Verwendung großer Dateien. Experimentieren Sie weiter und erkunden Sie weitere Funktionen von IronXL, um die Verarbeitung Ihrer Daten in C# zu verbessern. Fröhliches Kodieren!

< PREVIOUS
Importieren von CSV in Datatable in C#
NÄCHSTES >
Wie man eine Excel-Datei in VB .NET speichert

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 1,068,832 Lizenzen anzeigen >