Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
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.
Erstellen Sie ein C#-Konsolenprojekt in Visual Studio.
Installieren Sie die C# CSV-Bibliothek mit NuGet Package Manager.
Laden Sie die CSV-Datei mit der Methode WorkBook.LoadCSV
.
Datenwerte aus der Datei lesen und die Liste auffüllen.
Öffnen Sie Visual Studio: Starten Sie Visual Studio auf Ihrem Computer.
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.
Projekttyp auswählen: Wählen Sie "Console App" (.NET Core)"der Einfachheit halber als Projekttyp.
Benennen Sie Ihr Projekt: Benennen Sie Ihr Projekt CSVFileReader.
Speicherort wählen: Wählen Sie einen geeigneten Speicherort auf Ihrem Gerät, um dieses Projekt zu speichern.
Ö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...".
Suchen Sie nach IronXL: Klicken Sie auf die Registerkarte "Durchsuchen" und suchen Sie nach "IronXL.Excel"
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.
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.
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.
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
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)
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
In diesem Schritt wird die CSV-Datei geparst und eine "Liste" ausgefüllt
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
Bei diesem Parsing-Prozess wird zunächst eine Liste<Person>um die geparsten Daten zu speichern und ein boolesches Flag
isFirstRowzu verwenden, um die Kopfzeile der CSV-Datei zu überspringen. Die
foreach'-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.
Nach dem Parsen der CSV-Daten in unsere `List
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
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
Wenn Sie die Datei ausführen, werden die Daten der Liste in der Konsole angezeigt:
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.
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!
9 .NET API-Produkte für Ihre Bürodokumente