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 das Importieren von CSV-Dateien (durch Kommas getrennte Werte) 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.
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 (Comma Separated Values-Datei) ist eine Art von einfacher Textdatei, die eine spezifische 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, die es Ihnen ermöglicht, mit Excel- und CSV-Dateien in C# zu arbeiten. Um es zu verwenden, müssen Sie es über den NuGet Package Manager installieren. In Visual Studio:
Gehe zu Tools > NuGet-Paket-Manager > NuGet-Pakete für die Lösung verwalten.
Suche 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 using-Anweisungen enthalten die benötigten Namensräume für unsere Aufgabe.
Schritt 2: Erstellen einer Methode für den CSV-Import
Definieren Sie eine Klasse, CsvToDataTable, mit einer statischen Methode ImportCsvToDataTable. Diese Methode ist verantwortlich für die Umwandlung der CSV-Datei in eine DataTable.
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 beginnen Sie mit dem Laden der CSV-Datei. IronXL bietet eine unkomplizierte 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 zum Laden von CSV-Dateien. 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 ruft das erste Arbeitsblatt aus der Arbeitsmappe ab, was im Fall einer CSV-Datei dem gesamten CSV-Daten entspricht. Die ToDataTable-Methode ist ein leistungsstarkes Feature von IronXL, das die CSV-Daten effizient auf eine DataTable-Struktur abbildet, einschließlich einer Spaltenüberschriftenzeile, falls in der ersten Zeile der CSV-Datei vorhanden.
Schritt 5: Verwenden Sie die Methode in Ihrer Anwendung
Verwenden Sie nun die ImportCsvToDataTable-Methode 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
Dieser Codeausschnitt zeigt, wie die ImportCsvToDataTable-Methode 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 das Anzeigen der Daten in einer Benutzeroberfläche, das Filtern oder das Verarbeiten 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 geht durch 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" mit dem Spaltennamen und dem Wert, nach dem Sie filtern.
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:
Festlegen eines benutzerdefinierten Trennzeichens: Bevor Sie die CSV-Datei laden, können Sie das Trennzeichen Ihrer Datei festlegen. Zum Beispiel, wenn Ihre Datei ein Semikolon (;) verwendet, können Sie es so einstellen:
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
$vbLabelText $csharpLabel
Dynamische Trennzeichenerkennung: Alternativ könnten Sie eine Funktion schreiben, um das Trennzeichen dynamisch zu erkennen. 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 nach fortgeschritteneren Funktionen und Unterstützung suchen, beginnen die Lizenzoptionen 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#