Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
Willkommen zu diesem Einsteiger-Tutorial über den Import von CSV (komma-getrennte Werte) dateien in eine DataTable in C# mit IronXL. 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.
Bevor wir einsteigen, sollten Sie sicherstellen, dass Sie alles haben:
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.
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.
Öffnen Sie Visual Studio.
Wählen Sie Datei > Neu > Projekt.
IronXL ist eine leistungsstarke Bibliothek, mit der Sie mit Excel arbeiten und CSV-Dateien in C#. Um es zu verwenden, müssen Sie es über den NuGet Package Manager installieren. In Visual Studio:
Gehen Sie zu Tools > NuGet Package Manager > NuGet-Pakete für die Lösung verwalten.
Suchen Sie nach IronXL.Excel.
using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
Diese benutzenden Anweisungen enthalten die für unsere Aufgabe erforderlichen Namensräume.
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
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)
WorkBook.LoadCSV ist eine Methode in IronXL, um CSV-Dateien zu laden. Hier ist filePath der Pfad zu Ihrer CSV-Datei.
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
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.
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)
Dieses Codeschnipsel zeigt, wie die Methode ImportCsvToDataTable aufgerufen wird. Ersetzen Sie "csvfile.csv " durch den tatsächlichen Dateipfad Ihrer CSV-Datei.
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:
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
Dieser Code durchläuft jede Zeile und Spalte in der DataTable und gibt die Daten auf der Konsole aus.
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")
Ersetzen Sie "ColumnName " und "SomeValue " durch den Spaltennamen und den Wert, nach dem Sie filtern möchten.
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
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.
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.
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.
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:= ";")
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.
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.
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.
9 .NET API-Produkte für Ihre Bürodokumente