using IronXL;
using System;
using System.Linq;
// Supported for XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];
// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select a cell and return the converted value
int cellValue = workSheet["A2"].IntValue;
// Read from ranges of cells elegantly.
foreach (var cell in workSheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Calculate aggregate values such as Min, Max and Sum
decimal sum = workSheet["A2:A10"].Sum();
// Linq compatible
decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue);
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
Öffnen Sie Visual Studio.
Wählen Sie Datei > Neu > Projekt.
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:
Gehen Sie zu Tools > NuGet Package Manager > NuGet-Pakete für die Lösung verwalten.
Suchen Sie nach IronXL.Excel.
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
$vbLabelText $csharpLabel
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
$vbLabelText $csharpLabel
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)
$vbLabelText $csharpLabel
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
$vbLabelText $csharpLabel
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
Dim csvFilePath As String = "csvfile.csv"
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath)
$vbLabelText $csharpLabel
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
$vbLabelText $csharpLabel
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")
$vbLabelText $csharpLabel
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
$vbLabelText $csharpLabel
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.
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:
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
$vbLabelText $csharpLabel
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.
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS Importieren einer Excel-Datei in eine SQL-Datenbank in VB .NET
NÄCHSTES > Konvertieren einer CSV-Datei in eine Liste in C#