IRONXL VERWENDEN

Importieren von CSV in Datatable in C#

Veröffentlicht 27. Januar 2024
Teilen Sie:

Einführung

Willkommen zu diesem Einsteiger-Tutorial über den Import von CSV(komma-getrennte Werte) dateien in eineDataTable in C# mitIronXL. Dieser Leitfaden bietet Ihnen einen leicht nachvollziehbaren Ansatz, der sicherstellt, dass auch C#-Neulinge diesen Prozess problemlos bewältigen können. Wir gehen auf jeden Schritt ein, vom Einrichten der Umgebung bis zum Schreiben des Quellcodes. Am Ende dieses Tutorials wissen Sie, wie man CSV-Daten in eine Datatable konvertiert, Datatable-Spalten verwaltet und verschiedene Aspekte von CSV-Dokumenten in C# mithilfe eines Var-Readers und einer Verbindungszeichenfolge behandelt.

Voraussetzungen

Bevor wir einsteigen, sollten Sie sicherstellen, dass Sie alles haben:

  • Grundkenntnisse in C#
  • Visual Studio auf Ihrem lokalen Rechner installiert
  • Die IronXL-Bibliothek, die über den NuGet Package Manager bezogen werden kann

Verstehen der Grundlagen

Was ist eine CSV-Datei?

Eine CSV-Datei(Datei mit kommagetrennten Werten) ist eine Art von einfacher Textdatei, die eine spezielle Strukturierung verwendet, um tabellarische Daten anzuordnen. Es ist ein gängiges Format für den Datenaustausch, da CSV einfach und kompakt ist und mit zahlreichen Plattformen funktioniert. In einer CSV-Datei werden die Daten durch Kommas getrennt, und jede neue Zeile steht für eine neue Zeile, wobei die Spaltenüberschriften oft in der ersten Zeile stehen, int i.

Verstehen von DataTables in C#;

Eine DataTable ist Teil der ADO.NET-Bibliothek in C# und stellt eine einzelne Tabelle mit In-Memory-Daten dar. Sie besteht aus Zeilen und Spalten, wobei jede Spalte einen anderen Datentyp haben kann. DataTables sind sehr flexibel und können Daten in einem strukturierten Format darstellen, was sie ideal für die Bearbeitung von CSV-Dateien macht.

Ihr Projekt einrichten

Schritt 1: Erstellen eines neuen C# Projekts

  1. Öffnen Sie Visual Studio.

  2. Wählen Sie Datei > Neu > Projekt.

  3. Wählen Sie eine C#-Konsolen- oder Windows-Forms-Anwendung und benennen Sie sie entsprechend.

Schritt 2: IronXL installieren

IronXL ist eine leistungsstarke Bibliothek, mit der Siemit Excel arbeiten und CSV-Dateien in C#. Um es zu verwenden, müssen Sie es über den NuGet Package Manager installieren. In Visual Studio:

  1. Gehen Sie zu Tools > NuGet Package Manager > NuGet-Pakete für die Lösung verwalten.

  2. Suchen Sie nach IronXL.Excel.

    Wie importiert man CSV in C# in eine Datentabelle: Abbildung 1 - IronXL

  3. Installieren Sie das Paket in Ihrem Projekt.

Einlesen von CSV-Dateien in Datentabellen mit IronXL

Schritt 1: Richten Sie Ihre Umgebung ein

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
VB   C#

Diese benutzenden Anweisungen enthalten die für unsere Aufgabe erforderlichen Namensräume.

Schritt 2: Erstellen einer Methode für den CSV-Import

Definieren Sie eine Klasse, CsvToDataTable, mit einer statischen Methode ImportCsvToDataTable. Diese Methode ist für die Umwandlung der CSV-Datei in eine DataTable zuständig.

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
    }
}
public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
    }
}
Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Code snippet to import CSV will be placed here
	End Function
End Class
VB   C#

Schritt 3: Laden der CSV-Datei

Innerhalb der Methode ImportCsvToDataTable müssen Sie zunächst die CSV-Datei laden. IronXL bietet eine einfache Möglichkeit, dies zu tun:

// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
' Load the CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
VB   C#

WorkBook.LoadCSV ist eine Methode in IronXL, um CSV-Dateien zu laden. Hier ist filePath der Pfad zu Ihrer CSV-Datei.

Schritt 4: CSV in DataTable umwandeln

Konvertieren Sie die geladenen CSV-Daten in eine DataTable. Dieser Schritt ist der wichtigste, denn er wandelt die Daten in ein Format um, das in einer C#-Anwendung leicht bearbeitet und angezeigt werden kann.

// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable dt
DataTable dataTable = sheet.ToDataTable();
return dataTable;
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable dt
DataTable dataTable = sheet.ToDataTable();
return dataTable;
' Get the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert CSV worksheet to DataTable dt
Dim dataTable As DataTable = sheet.ToDataTable()
Return dataTable
VB   C#

Dieses Snippet konvertiert die CSV-Daten in eine DataTable. DefaultWorkSheet holt das erste Arbeitsblatt aus der Arbeitsmappe, was den gesamten CSV-Daten im Falle einer CSV-Datei entspricht. Die Methode ToDataTable ist eine leistungsstarke Funktion von IronXL, die die CSV-Daten effizient auf eine DataTable-Struktur abbildet, einschließlich einer Kopfzeile mit Spaltenstrings, falls in der ersten Zeile der CSV-Datei vorhanden.

Schritt 5: Verwenden Sie die Methode in Ihrer Anwendung

Verwenden Sie nun die Methode ImportCsvToDataTable in Ihrer Anwendung. Sie könnten diese Methode zum Beispiel beim Start der Anwendung oder beim Hochladen einer CSV-Datei durch den Benutzer aufrufen wollen.

// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
' Usage
Dim csvFilePath As String = "csvfile.csv"
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath)
VB   C#

Dieses Codeschnipsel zeigt, wie die Methode ImportCsvToDataTable aufgerufen wird. Ersetzen Sie "csvfile.csv " durch den tatsächlichen Dateipfad Ihrer CSV-Datei.

Schritt 6: Arbeiten mit der Output DataTable

Sobald Sie die DataTable haben, können Sie verschiedene Operationen durchführen, wie z. B. die Anzeige der Daten in einer Benutzeroberfläche, das Filtern oder die Verarbeitung der Daten. Hier sind einige Beispiele:

Anzeige von Daten in einer Konsolenanwendung

foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item} ");
    }
    Console.WriteLine();
}
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item} ");
    }
    Console.WriteLine();
}
For Each row As DataRow In dataTable.Rows
	For Each item In row.ItemArray
		Console.Write($"{item} ")
	Next item
	Console.WriteLine()
Next row
VB   C#

Dieser Code durchläuft jede Zeile und Spalte in der DataTable und gibt die Daten auf der Konsole aus.

Daten filtern

Sie können LINQ verwenden, um Daten in der DataTable zu filtern. Zum Beispiel, wenn Sie Zeilen auswählen möchten, in denen eine bestimmte Spalte eine Bedingung erfüllt:

var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
Dim filteredRows = dataTable.AsEnumerable().Where(Function(row) row.Field(Of String)("ColumnName") = "SomeValue")
VB   C#

Ersetzen Sie "ColumnName " und "SomeValue " durch den Spaltennamen und den Wert, nach dem Sie filtern möchten.

Vollständiger Codeschnipsel

Hier ist der vollständige Quellcode, den Sie in Ihrem Projekt verwenden können:

using IronXL;
using System;
using System.Data;
using System.IO;
public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Check if the file exists
        if (!File.Exists(filePath))
        {
            throw new FileNotFoundException($"The file at {filePath} was not found.");
        }
        // Load the CSV file
        WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
        // Get the first worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert the worksheet to DataTable
        DataTable dataTable = sheet.ToDataTable();
        return dataTable;
    }
}
class Program
{
    static void Main(string [] args)
    {
        // Usage
        try
        {
            string strfilepath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write($"{item} ");
                }
                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
using IronXL;
using System;
using System.Data;
using System.IO;
public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Check if the file exists
        if (!File.Exists(filePath))
        {
            throw new FileNotFoundException($"The file at {filePath} was not found.");
        }
        // Load the CSV file
        WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
        // Get the first worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert the worksheet to DataTable
        DataTable dataTable = sheet.ToDataTable();
        return dataTable;
    }
}
class Program
{
    static void Main(string [] args)
    {
        // Usage
        try
        {
            string strfilepath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write($"{item} ");
                }
                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
Imports IronXL
Imports System
Imports System.Data
Imports System.IO
Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Check if the file exists
		If Not File.Exists(filePath) Then
			Throw New FileNotFoundException($"The file at {filePath} was not found.")
		End If
		' Load the CSV file
		Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
		' Get the first worksheet
		Dim sheet As WorkSheet = workbook.DefaultWorkSheet
		' Convert the worksheet to DataTable
		Dim dataTable As DataTable = sheet.ToDataTable()
		Return dataTable
	End Function
End Class
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Usage
		Try
			Dim strfilepath As String = "sample_data.csv" ' CSV file path
			Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath)
			For Each row As DataRow In dataTable.Rows
				For Each item In row.ItemArray
					Console.Write($"{item} ")
				Next item
				Console.WriteLine()
			Next row
		Catch ex As Exception
			Console.WriteLine($"An error occurred: {ex.Message}")
		End Try
	End Sub
End Class
VB   C#

Sie können diesen Code in der Datei Program.cs verwenden. Vergessen Sie nicht, die Lizenz von IronXL hinzuzufügen, wenn Sie in der Produktionsumgebung arbeiten.

Ausgabe von Code

Sobald Sie den Code ausführen, wird die CSV-Datei geladen und ihre Daten in die DataTable importiert. Danach wird der Inhalt der datierbaren Spalten in der Konsole angezeigt. Es hilft zu überprüfen, ob die Daten korrekt in die DataTable importiert wurden.

Wie importiert man CSV in C# in eine Datentabelle: Abbildung 2 - Ausgabe

Umgang mit verschiedenen Szenarien

In der Praxis können CSV-Dateien in Format und Struktur stark variieren. Es ist wichtig, mit diesen Variationen umzugehen, um sicherzustellen, dass Ihre Anwendung robust und vielseitig ist. Im Folgenden wird erläutert, wie verschiedene Szenarien beim Import von CSV-Daten in eine Datentabelle mit IronXL gehandhabt werden können.

Behandlung eines anderen Trennzeichens

Kommas sind der Standardwert für Trennzeichen in CSV-Dateien. In CSV-Dateien werden jedoch nicht immer Kommas zur Trennung der Werte verwendet. Manchmal werden ein Semikolon, ein Tabulator oder andere Zeichen als Begrenzungszeichen verwendet. Um dies in IronXL zu handhaben:

Benutzerdefiniertes Trennzeichen festlegen: Bevor Sie die CSV-Datei laden, können Sie das Trennzeichen Ihrer Datei festlegen. Wenn Ihre Datei zum Beispiel ein Semikolon enthält(;)können Sie ihn wie folgt einstellen:

WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
VB   C#

Dynamische Erkennung des Trennzeichens: Alternativ könnten Sie eine Funktion schreiben, die das Trennzeichen dynamisch erkennt. Dazu können Sie die ersten Zeilen der Datei analysieren und das häufigste Sonderzeichen ermitteln.

Umgang mit großen CSV-Dateien

Beim Umgang mit großen CSV-Dateien ist es wichtig, den Speicherverbrauch und die Leistung zu berücksichtigen. IronXL bietet effiziente Möglichkeiten, große Dateien zu verarbeiten, ohne die gesamte Datei auf einmal in den Speicher zu laden. Sie können die Datei in Stücken lesen oder die von IronXL bereitgestellten Streaming-APIs nutzen, um die Speichernutzung effektiv zu verwalten.

Schlussfolgerung

Das Importieren von CSV-Daten in eine DataTable mit IronXL in C# ist einfach zu bewerkstelligen. Es erweitert die Datenverarbeitungsmöglichkeiten Ihrer Anwendung, so dass Sie CSV-Dateien effizient verarbeiten können. Mit den in diesem Tutorial beschriebenen Schritten können auch Anfänger diese Funktionalität leicht in ihre C#-Projekte integrieren.

IronXL bietet den Nutzern eine kostenlose Testversion an, um seine Funktionen zu erkunden. Für diejenigen, die erweiterte Funktionen und Unterstützung wünschen, beginnen die Lizenzierungsoptionen bei $749.

< PREVIOUS
Importieren einer Excel-Datei in eine SQL-Datenbank in VB .NET
NÄCHSTES >
Konvertieren einer CSV-Datei in eine Liste in C#

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

Gratis NuGet-Download Downloads insgesamt: 1,132,445 Lizenzen anzeigen >