VERGLEICH MIT ANDEREN KOMPONENTEN

Ein Vergleich zwischen IronXL und CsvHelper

Veröffentlicht 9. Mai 2022
Teilen Sie:

Die Arbeit mit CSV-Dateien kann eine schwierige Aufgabe sein. Es gibt heute viele Bibliotheken, die Entwicklern bei dieser Aufgabe helfen, ohne dass Microsoft Excel installiert sein muss.

In diesem Artikel werden wir besprechen und vergleichen, wie man mit Microsoft Excel-Dokumenten programmatisch in C# .NET-Technologien arbeiten kann, entweder im CSV-Format oder im Standard-XLSX-Format, unter Verwendung von zwei der beliebtesten Bibliotheken, IronXL und CsvHelper.

Schauen wir uns zunächst einmal an, was beide Bibliotheken zu bieten haben.

Die IronXL-Bibliothek

IronXL ist eine .NET-Bibliothek, die das Lesen und Bearbeiten von Microsoft Excel-Dokumenten mit C# erleichtert. IronXL.Excel ist eine eigenständige .NET-Softwarebibliothek zum Lesen einer breiten Palette von Tabellenkalkulationsformaten. Es erfordert weder die Installation von Microsoft Excel, noch ist es von Interop abhängig. Es arbeitet sehr reibungslos mit CSV-Dateien.

IronXL ist eine intuitive C#-API, die es Ihnen ermöglicht, Excel-Tabellendateien in .NET mit blitzschneller Leistung zu lesen, zu bearbeiten und zu erstellen. IronXL unterstützt vollständig .NET Core, .NET-Framework, Xamarin, Mobile, Linux, macOS und Azure.

IronXL ist eine führende .NET Core und .NET-Framework Excel-Tabellenbibliothek für C#.

IronXL Funktionsumfang

  • Laden, Lesen und Bearbeiten von Daten - aus XLS/XLSX/CSV/TSV
  • Speichern und Exportieren - in XLS/XLSX/CSV/TSV/JSON
  • Ranges - einfaches WorkSheet zu verwenden ["A1:B10"] syntax. Kombinieren und erstellen Sie Bereiche intuitiv.
  • Sortieren - Sortierbereiche, Spalten und Zeilen.
  • Styling - visuelle Stile für Zellen, Schriftart, Größe, Hintergrundmuster, Rahmen, Ausrichtung und Zahlenformate.

CsvHelper

Eine .NET-Bibliothek zum Lesen und Schreiben von CSV-Dateien. Äußerst schnell, flexibel und einfach zu bedienen. Unterstützt das Lesen und Schreiben von benutzerdefinierten Klassenobjekten. Alle Beispielcodes sind in dem Paket CsvHelper documentation install verfügbar.

Wie man CsvHelper in C# verwendet

  1. CsvHelper C#-Bibliothek zum Lesen von CSV-Dateien installieren
  2. Ausnutzen CsvKonfiguration klasse, um die Konfiguration für CSV festzulegen
  3. Öffnen Sie die Datei mit C# built-in StreamReader
  4. Geben Sie die in Schritt 2 und 3 vorgenommenen Instanzen in CsvReader klasse zu lesen
  5. Konvertieren von Daten in CSV durch Erben von CsvHelper DefaultTypeConverter klasse

CsvHelper Eigenschaften

  • Schnell: Kompilieren von Klassen im laufenden Betrieb für extrem schnelle Leistung
  • Flexibel: konservativ beim Schreiben, liberal beim Lesen
  • Einfach zu bedienen: Lesen und Schreiben sind so einfach wie GetRecords() und WriteRecords(datensätze)
  • Hochgradig konfigurierbar
  • Linux-Modus
  • Geringe Speichernutzung

1. Erstellen einer Konsolenanwendung

Gehen Sie wie folgt vor, um eine Konsolenanwendung zu erstellen:

  • Starten Sie die Visual Studio 2022 IDE.
  • Klicken Sie auf "Neues Projekt erstellen".
  • Wählen Sie auf der Seite "Neues Projekt erstellen" in der Dropdown-Liste der Sprachen C#, in der Liste Plattformen Windows und in der Liste Projekttypen Konsole.
  • Wählen Sie Konsolenanwendung (.NET-Framework) aus den angezeigten Projektvorlagen.

    Projekt erstellen - Konsolenanwendung

  • Klicken Sie auf Weiter.
  • Geben Sie auf dem Bildschirm Zusätzliche Informationen die Framework-Version an, die Sie verwenden möchten. In diesem Beispiel wird .NET-Framework 4.8 verwendet.

    Projekt erstellen - .NET-Framework

  • Klicken Sie auf Erstellen, um den Vorgang abzuschließen.

    Das Projekt ist nun erstellt und wir sind fast bereit, die Bibliotheken zu testen. Wir müssen sie jedoch noch installieren und in unser Projekt integrieren. Installieren wir zunächst IronXL.

2. IronXL C# Bibliothek Installation

Sie können die IronXL-Bibliothek mit den folgenden Methoden herunterladen und installieren:

  1. Verwendung von Visual Studio mit NuGet-Paketen

  2. Laden Sie das NuGet-Paket direkt herunter

  3. Manuelle Installation mit der DLL

    Schauen wir uns jede einzelne davon genauer an.

2.1. Verwendung von Visual Studio mit NuGet-Paketen

Visual Studio bietet den NuGet Package Manager, um NuGet-Pakete in Ihren Projekten zu installieren. Sie können über das Projektmenü darauf zugreifen, oder indem Sie mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer klicken.

Select-Manage-NuGet-Package

  • Suchen Sie nun auf der Registerkarte Durchsuchen -> IronXL.Excel -> Installieren

    Suche nach IronXL

  • Und wir sind fertig.

2.2. Direktes Herunterladen des NuGet-Pakets

Dazu können Sie direkt die NuGet-Website besuchen und das Paket herunterladen. Die Schritte sind:

  • Navigieren Sie zuhttps://www.nuget.org/packages/IronXL.Excel
  • Wählen Sie "Paket herunterladen"
  • Doppelklicken Sie auf das heruntergeladene Paket
  • Das Paket wird installiert
  • Laden Sie Ihr Visual Studio-Projekt neu und verwenden Sie es

2.3. Manuelle Installation mit der DLL

Eine andere Möglichkeit, die IronXL C# Bibliothek herunterzuladen und zu installieren, ist die Verwendung der folgenden Schritte, um das IronXL NuGet-Paket über die Entwickler-Eingabeaufforderung zu installieren.

  • Öffnen Sie die Developer-Eingabeaufforderung, die sich normalerweise im Ordner Visual Studio befindet.
  • Geben Sie den folgenden Befehl ein: PM > Install-Package IronXL.Excel
  • Eingabe drücken
  • Dadurch wird das Paket heruntergeladen und installiert
  • Laden Sie Ihr Visual Studio-Projekt neu und verwenden Sie es

2.4. Notwendige Verwendungsrichtlinien hinzufügen

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei Program.cs und dann auf Code anzeigen.

  2. Fügen Sie die folgenden using-Direktiven am Anfang der Codedatei hinzu:
using IronXL;
using IronXL;
Imports IronXL
VB   C#

Alles erledigt! IronXL ist heruntergeladen, installiert und einsatzbereit. Vorher sollten wir jedoch CsvHelper installieren.

3. CsvHelper Installation

3.1. Verwendung der NuGet-Paketmanager-Konsole

Um die CsvHelper C# Library herunterzuladen und zu installieren, führen Sie die folgenden Schritte aus, um das NuGet-Paket über die Entwickler-Eingabeaufforderung zu installieren.

  • Öffnen Sie die Developer-Eingabeaufforderung, die sich normalerweise im Ordner Visual Studio befindet.
  • Geben Sie den folgenden Befehl ein: PM> Install-Package CsvHelper -Version 27.2.1
  • Eingabe drücken
  • Dadurch wird das Paket heruntergeladen und installiert
  • Laden Sie Ihr Visual Studio-Projekt neu und verwenden Sie es

3.2. Direkter Download

Download von der NuGet-Website: https://www.nuget.org/packages/CsvHelper/

4. Arbeiten mit CSV-Dateien mit IronXL

Ein durch Komma getrennter Wert (CSV) ist eine durch Komma getrennte Textdatei, in der die Werte durch ein Komma getrennt sind. Jede Zeile der Datei ist ein Datensatz. Diese Dateien für Berechnungen zu manipulieren, kann eine schwierige Aufgabe sein, und IronXL bietet eine ziemlich gute und einfache Möglichkeit, dies ohne Microsoft Excel zu tun. Konvertieren wir zunächst eine CSV-Datei in eine normale Excel-Datei.

4.1. Konvertierung einer CSV-Datei in das Excel-Format

Das Verfahren ist ziemlich einfach und leicht. In der Regel ist dies mit einer Zeile Code erledigt.

CSV-zu-Excel-Formate:

WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
VB   C#

4.2. Lesen und Manipulieren konvertierter CSV-Dateien mit IronXL

Die IronXL WorkBook-Klasse stellt ein Excel-Blatt dar. Um eine Excel-Datei mit C# zu öffnen, verwenden wir WorkBook.Load und geben den Pfad der Excel-Datei an (.xlsx). Der folgende einzeilige Code wird verwendet, um die Datei zum Lesen zu öffnen:

//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
'Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
VB   C#

Jedes WorkBook kann mehrere WorkSheet-Objekte enthalten. Diese stellen Arbeitsblätter im Excel-Dokument dar. Wenn die Arbeitsmappe Arbeitsblätter enthält, rufen Sie diese wie folgt nach Namen auf:

//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
VB   C#

Code zum Lesen der Zellwerte:

// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read from Ranges of cells elegantly.
For Each cell In worksheet ("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
VB   C#

Nach dem Laden und Lesen der Arbeitsmappe und des Arbeitsblatts kann das folgende Codebeispiel verwendet werden, um entweder Änderungen an Formeln vorzunehmen oder auf bestimmte Zellen anzuwenden. Der Code lautet wie folgt:

// Set Formulas
worksheet ["A1"].Formula = "Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "Max(C3:C7)";
 
// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
// Set Formulas
worksheet ["A1"].Formula = "Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "Max(C3:C7)";
 
// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
' Set Formulas
worksheet ("A1").Formula = "Sum(B8:C12)"
worksheet ("B8").Formula = "=C9/C11"
worksheet ("G30").Formula = "Max(C3:C7)"
'
' Force recalculate all formula values in all sheets.  
workbook.EvaluateAll()
VB   C#

4.3. Speichern des Excel-Dokuments zurück in die CSV-Datei

Das Schreiben von CSV-Dateien ist mit IronXL ein einfacher Prozess. Der folgende Code speichert einfach die Excel-Datei im CSV-Format mit der Methode SaveAsCsv.

WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
'Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
'Saved as : SaveAsCSV.Sheet1.csv
VB   C#

5. Arbeiten mit CSV-Dateien mit CsvHelper

Das Lesen von CSV-Dateien ist eine der Aufgaben, die viel einfacher erscheinen, als sie tatsächlich sind. Die CsvHelper-Bibliothek macht es einfach, typsicheren, schnellen und flexiblen Code zu schreiben.

5.1. CSV-Dateien mit CsvHelper lesen

Dies ist die CSV-Beispieldatei, die drei Textspalten und eine Zahlenspalte enthält.

FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'FirstName,LastName,Age,IsActive Ali,Talal,30,Yes Affan,Ahmad,31,No Saad,Bhatti,31,Yes
VB   C#

Wir werden jede Zeile in ein Objekt vom Typ Person abbilden.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
Public Class Person
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Age() As Integer?
	Public Property IsActive() As String
End Class
VB   C#

Der Code zum Lesen unserer CSV-Datei ist unten zu sehen.

var fileName = @"<path to our CSV file>";
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (var textReader = new StreamReader(fs, Encoding.UTF8))
    using (var csv = new CsvReader(textReader, configuration))
    {
        var data = csv.GetRecords<Person>();

        foreach (var person in data)
        {
            // Do something with values in each row
        }
    }
}
var fileName = @"<path to our CSV file>";
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (var textReader = new StreamReader(fs, Encoding.UTF8))
    using (var csv = new CsvReader(textReader, configuration))
    {
        var data = csv.GetRecords<Person>();

        foreach (var person in data)
        {
            // Do something with values in each row
        }
    }
}
Dim fileName = "<path to our CSV file>"
Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With {
	.Encoding = Encoding.UTF8,
	.Delimiter = ","
}

Using fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)
	Using textReader = New StreamReader(fs, Encoding.UTF8)
	Using csv = New CsvReader(textReader, configuration)
		Dim data = csv.GetRecords(Of Person)()

		For Each person In data
			' Do something with values in each row
		Next person
	End Using
	End Using
End Using
VB   C#

Der Typ der Daten ist IEnumerable. CsvHelper ordnet jede Spalte automatisch der Eigenschaft mit demselben Namen zu. Zum Beispiel wird der Wert in der Spalte Vorname in Person.Vorname abgebildet. Wir können dann die Daten iterieren und auf die Werte in jeder Zeile zugreifen.

5.2. Daten in CSV-Dateien von einem Typ in einen anderen konvertieren

CSV-Dateien enthalten meist Textdaten. Die Spalte Alter ist beispielsweise ein ganzzahliger Wert und die CSV-Datei enthält nur Text. CsvHelper kann Daten von String in .NET-Standardtypen konvertieren (Boolesch, Int32, Int64, Enum). In unserem Fall haben wir einen IsActive bool-Datentyp, der nur True/False haben kann und Nicht-Standardwerte enthält. Er kann durch Erstellen eines benutzerdefinierten Konverters konvertiert werden. Die Gestaltung des Codes sieht folgendermaßen aus:

public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
Public Class CustomBooleanConverter
	Inherits DefaultTypeConverter

	Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object
		Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase)
	End Function
End Class
VB   C#

Obwohl bool ein Standard-.NET-Typ ist, kann der Standardkonverter nur True/False-Werte verarbeiten, während unsere CSV-Datei Yes/No hat. Hier müssen wir den DefaultTypeConverter unterklassifizieren und dann die Methode ConvertFromString überschreiben.

6. Lizenzvergabe

IronXL ist ein offenes kommerzielles C# Excel-Bibliothek. Es ist kostenlos für die Entwicklung und kann jederzeit für den kommerziellen Einsatz lizenziert werden.Lizenzen sind verfügbar für Einzelprojekte, einzelne Entwickler, Agenturen und globale Unternehmen sowie für SaaS- und OEM-Vertrieb. Alle Lizenzen beinhalten eine 30-tägige Geld-zurück-Garantie, ein Jahr Produktsupport und Updates, Gültigkeit für Entwicklung/Taging/Produktion sowie eine permanente Lizenz (einmaliger Kauf). Das Lite-Paket beginnt mit $749.

CsvHelper - Lesen und Schreiben von CSV-Dateien, ist für die kommerzielle Nutzung völlig kostenlos.

7. Zusammenfassung und Schlussfolgerung

Zusammenfassung

IronXL ist eine vollständige Bibliothek, die alles bietet, was Sie brauchen, um eine Excel-Datei zu bearbeiten. Es ist einfach zu bedienen und bietet Ihnen die Möglichkeit, verschiedene Formate in XLSX sowie von XLSX in andere Formate, wie z. B. CSV, zu konvertieren. Diese Konvertierung bietet dem Benutzer die Flexibilität, mit verschiedenen Dateiformaten problemlos zu arbeiten.

CsvHelper hingegen wurde speziell für die Arbeit mit CSV-Dateiformaten entwickelt, d. h. es kann nur mit CSV-Dateien arbeiten. Alle Codebeispiele sind in den CsvHelper-Dokumentationsdateien zu finden. Die Dokumentation gibt Ihnen Hinweise zur Verwendung von CsvHelper in Ihrem Projekt.

Schlussfolgerung

IronXL hat einen klaren Vorteil gegenüber CsvHelper, da es Benutzer unterstützt, die mit mehreren Formaten arbeiten. Außerdem können Sie Formeln und Stile nach Ihren Wünschen anwenden, während CsvHelper nur das Lesen und Schreiben von CSV-Dateien mit begrenzten Optionen ermöglicht. Außerdem können Sie keine neuen Datensätze an eine bestehende CSV-Datei anhängen, da dies die vorherigen Einträge einfach überschreibt.

< PREVIOUS
Ein Vergleich zwischen IronXL und CsvWriter
NÄCHSTES >
Ein Vergleich von IronXL und NPOI

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

Gratis NuGet-Download Downloads insgesamt: 1,068,832 Lizenzen anzeigen >