Zum Fußzeileninhalt springen
IRONXL VERWENDEN

Wie man eine CSV-Datei in eine Liste in C# konvertiert

In this tutorial for beginners, we are going to see how to read CSV files into a list in C# using the IronXL library. Nun, dies ist eine der grundlegendsten Dinge, die Sie in jeder Programmiersprache wissen müssen, da CSV-Dateien eine sehr übliche Methode sind, um Daten zu speichern und von einem System oder einer Anwendung zu einer anderen zu übertragen. Wir werden alles abdecken, von der Einrichtung des Projekts bis zum effektiven Parsen von CSV-Dateien.

Wie man CSV-Dateien in Listen in C# konvertiert

  1. Erstellen Sie ein C#-Konsolenprojekt in Visual Studio.
  2. Installieren Sie die C#-CSV-Bibliothek mit dem NuGet-Paket-Manager.
  3. Laden Sie die CSV-Datei mit der Methode WorkBook.LoadCSV.
  4. Lesen Sie Datenwerte aus der Datei und füllen Sie die Liste.
  5. Drucken Sie die Liste auf der Konsole aus.

Einrichten Ihres Projekts

Schritt 1: Erstellen eines neuen C#-Projekts

  1. Öffnen Sie Visual Studio: Starten Sie Visual Studio auf Ihrem Computer.
  2. Erstellen Sie ein neues Projekt: Klicken Sie auf "Create a new project". Dies öffnet ein Fenster, in dem Sie den Projekttyp auswählen können.
  3. Wählen Sie den Projekttyp aus: Wählen Sie "Console App (.NET Core)" als Projekttyp für Einfachheit.
  4. Bennen Sie Ihr Projekt: Nennen Sie Ihr Projekt CSVFileReader.
  5. Wählen Sie einen Speicherort: Wählen Sie einen geeigneten Speicherort auf Ihrem Gerät, um dieses Projekt zu speichern.
  6. Generieren Sie das Projekt: Klicken Sie auf "Create", um Ihr neues C#-Projekt zu initialisieren.

Schritt 2: Installation der IronXL-Bibliothek

  1. Öffnen Sie den NuGet-Paket-Manager: Gehen Sie in Visual Studio zum Menü "Tools", wählen Sie "NuGet Package Manager" und dann "Manage NuGet Packages for Solution...".
  2. Durchsuchen Sie IronXL: Klicken Sie auf die Registerkarte "Browse" und suchen Sie nach "IronXL.Excel".

Wie man CSV-Dateien in Listen in C# konvertiert: Abbildung 1 - IronXL

  1. Installieren Sie IronXL: Finden Sie das IronXL-Paket in den Suchergebnissen, wählen Sie es aus und klicken Sie auf "Install". Stellen Sie sicher, dass Sie allen Lizenzvereinbarungen zustimmen und die Änderungen überprüfen.
  2. Installation überprüfen: Nach der Installation sollten Sie sehen, dass IronXL in den Referenzen Ihres Projekts aufgeführt ist.

Nun ist Ihr CSVFileReader-Projekt mit der IronXL-Bibliothek eingerichtet und Sie können mit dem Lesen und Verarbeiten von CSV-Dateien in C# beginnen. Diese Einrichtung bildet die Grundlage für die CSV-Leseaufgaben, die wir in den folgenden Abschnitten dieses Tutorials durchführen werden.

Parsen und Verarbeiten von CSV-Dateien in C#

Nach dem Einrichten des Projekts und der Installation der IronXL-Bibliothek konzentrieren wir uns nun auf das Parsen und Verarbeiten von CSV-Dateien. Wir arbeiten innerhalb der Datei Program.cs, die automatisch in Ihrem CSVFileReader-Projekt generiert wird.

Schritt 1: Angeben des Dateipfads

Bevor wir Daten lesen können, müssen wir wissen, wo sich unsere CSV-Datei befindet. Definieren Sie eine Variable in der Main-Methode, 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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

Schritt 3: Definieren einer Datenstruktur

Erstellen Sie eine Klasse, die die Datenstruktur in Ihrer CSV-Datei repräsentiert. Wenn Ihre CSV beispielsweise Informationen über Personen enthält, definieren Sie eine Person-Klasse wie diese:

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
$vbLabelText   $csharpLabel

Schritt 4: Parsen von CSV-Daten

In diesem Schritt werden wir die CSV-Datei parsen und eine List<Person> mit den Daten füllen. Wir verwenden IronXL, um das CSV-Lesen zu handhaben, und der Schlüssel ist es, jede Zeile oder Zeile der CSV korrekt zu verarbeiten, die Überschriften und mögliche leere Zeilen zu berücksichtigen. Hier ist eine detaillierte Übersicht 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
$vbLabelText   $csharpLabel

In diesem Parsing-Prozess initialisieren wir zuerst eine List<Person>, um die geparsten Daten zu speichern, und verwenden eine boolesche Markierung isFirstRow, um die Kopfzeile der CSV-Datei zu überspringen. Die foreach-Schleife iteriert durch jede Zeile der CSV-Datei. Während der ersten Iteration wird die Kopfzeile identifiziert und übersprungen, sodass nur Datenzeilen verarbeitet werden. Dann prüfen wir jede Zeile, um sicherzustellen, dass sie nicht leer ist, indem wir row.IsEmpty verwenden. Dieser Schritt ist entscheidend, um Parsing-Fehler mit 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 entscheidend, Datenarten korrekt zu analysieren und zu konvertieren, wie z.B. die Umwandlung des 'Age'-Strings in einen Integer. Das geparste Person-Objekt wird dann unserer people-Liste hinzugefügt. Dieser Ansatz stellt sicher, dass nur gültige Datenzeilen verarbeitet und gespeichert werden und effektiv potenzielle Probleme wie nicht-numerische Strings in numerischen Spalten oder unerwartete leere Zeilen gehandhabt werden.

Schritt 5: Anzeigen der Daten

Nach dem Parsen der CSV-Daten in unsere List<Person> ist der nächste wichtige Schritt, die Daten anzuzeigen und zu überprüfen. Dies hilft nicht nur sicherzustellen, dass unser Parsing erfolgreich war, sondern erlaubt uns auch, die Ausgabe zu beobachten und eine schnelle Überprüfung der Datenqualität durchzuführen. So können Sie dies implementieren:

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
$vbLabelText   $csharpLabel

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

using IronXL;
using System;
using System.Collections.Generic;

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;
using System;
using System.Collections.Generic;

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
Imports System
Imports System.Collections.Generic

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
$vbLabelText   $csharpLabel

Ausgabe des Codes

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

Wie man CSV-Dateien in Listen in C# konvertiert: Abbildung 2 - Listen-Ausgabe

Umgang mit verschiedenen Datentypen

Beim Umgang mit verschiedenen Datentypen in einer CSV-Datei ist es wichtig, die Parsing-Logik an den spezifischen Typ jeder Daten-Spalte anzupassen. Im Person-Klasseneintrag Beispiel, während der Name ein String ist und direkt mit StringValue zugewiesen werden kann, erfordern numerische Felder wie Age eine Umwandlung von String zu Integer, indem man Int32.Parse oder Convert.ToInt32 verwendet. Dies ist notwendig, um Typinkongruenzfehler zu vermeiden.

Für komplexere Datentypen, wie Daten, verwenden Sie DateTime.Parse, um String-Repräsentationen von Daten in DateTime-Objekte zu konvertieren. Es ist wichtig, sich des Datumsformats bewusst zu sein, das in Ihrer CSV-Datei verwendet wird, und sicherzustellen, dass es mit dem in Ihrem Code erwarteten Format übereinstimmt. Inkonsistente Datumsformate können zu Parsing-Fehlern oder falscher Dateninterpretation führen.

Abschluss

Sie haben gerade gelernt, wie man eine CSV-Datei mit IronXL in C# liest, parst und die Daten anzeigt. Dieser Ansatz kann auf verschiedene Datentypen und Dateiformate angewendet werden. Dies stellt somit eine insgesamt nützliche Fähigkeit für jeden Entwickler dar, der C# als Hauptsprache wählt.

IronXL bietet eine kostenlose Testversion an, damit Nutzer seine Funktionen ausprobieren können. Sobald die Testphase endet, beginnen die Lizenzgebühren für IronXL ab einem Startpreis von $799.

Bedenken Sie, dass Ausnahmen und Randfälle behandelt werden müssen, um robusteren Code zu schreiben, insbesondere beim Umgang mit verschiedenen Datentypen und der Verwendung großer Dateien. Experimentieren und erkunden Sie weiterhin die Funktionen von IronXL, um das Verarbeiten Ihrer Daten in C# zu verbessern. Viel Spaß beim Programmieren!

Häufig gestellte Fragen

Wie kann ich CSV-Dateien in eine Liste in C# einlesen?

Sie können CSV-Dateien in eine Liste in C# einlesen, indem Sie die IronXL-Bibliothek verwenden. Erstellen Sie zuerst ein C# Konsolenprojekt in Visual Studio und installieren Sie IronXL über den NuGet-Paket-Manager. Verwenden Sie dann die WorkBook.LoadCSV-Methode, um die CSV-Datei zu laden und die Daten in eine Liste zu analysieren.

Welche Methode verwende ich, um eine CSV-Datei in C# zu laden?

Zum Laden einer CSV-Datei in C#, verwenden Sie die WorkBook.LoadCSV-Methode der IronXL-Bibliothek, die den Dateipfad als Parameter nimmt.

Wie definiere ich eine Datenstruktur, die den Inhalten einer CSV-Datei entspricht?

Definieren Sie eine Klasse, wie z.B. eine 'Person'-Klasse, mit Eigenschaften, die den Spalten in Ihrer CSV-Datei entsprechen. Dies hilft, die aus der CSV-Datei abgerufenen Daten in ein objektorientiertes Format zu strukturieren.

Welche Technik kann verwendet werden, um die Kopfzeile in einer CSV-Datei zu überspringen?

Um die Kopfzeile zu überspringen, implementieren Sie eine boolesche Kennzeichnung, um zu prüfen, ob die Zeile die erste ist und überspringen Sie die Verarbeitung, indem Sie zur nächsten Iteration übergehen.

Wie kann ich leere Zeilen beim Analysieren einer CSV-Datei in C# handhaben?

Verwenden Sie die Zeileneigenschaften der IronXL-Bibliothek, wie IsEmpty, um auf leere Zeilen zu prüfen und diese während des Analyseprozesses zu überspringen.

Was ist die Bedeutung der Verarbeitung verschiedener Datentypen beim Verarbeiten von CSV-Dateien?

Die korrekte Verarbeitung verschiedener Datentypen stellt sicher, dass die Daten genau verarbeitet werden und verhindert Fehler bei der Typenübereinstimmung, insbesondere bei der Arbeit mit numerischen oder Datumsfeldern.

Was sind einige häufige Herausforderungen bei der Verarbeitung von CSV-Dateien?

Häufige Herausforderungen sind die Handhabung verschiedener Datentypen, das Überspringen leerer oder fehlerhaft formatierter Zeilen und die Sicherstellung einer genauen Analyse und Verarbeitung der Daten ohne Fehler.

Was sind die Vorteile der Verwendung einer Bibliothek zur Verarbeitung von CSV-Dateien in C#?

Die Verwendung der IronXL-Bibliothek zur Verarbeitung von CSV-Dateien in C# vereinfacht das Laden und Analysieren von CSV-Dateien mit seinen intuitiven Methoden, sodass Entwickler Daten effizient handhaben können.

Welche Schritte sollte ich befolgen, um ein C# Projekt für das Lesen von CSV-Dateien einzurichten?

Erstellen Sie zunächst ein C# Konsolenprojekt in Visual Studio, installieren Sie die IronXL-Bibliothek mit dem NuGet Paket-Manager und verwenden Sie die WorkBook.LoadCSV-Methode, um CSV-Dateien zu laden und in eine Liste zu analysieren.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen