Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
Die Arbeit mit CSV-Dateien kann eine schwierige Aufgabe sein. Heute gibt es jedoch zahlreiche 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-Excel-Format, unter Verwendung von zwei der beliebtesten Bibliotheken, IronXL und CSVWriter.
Schauen wir uns zunächst einmal an, was beide Bibliotheken zu bieten haben.
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.
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#.
Eine .NET-Bibliothek zum Schreiben von CSV-Dateien. Äußerst schnell, flexibel und einfach zu bedienen. Unterstützt das Schreiben eigener Klassenobjekte.
Gehen Sie wie folgt vor, um eine Konsolenanwendung zu erstellen:
Projekt erstellen - Konsolenanwendung
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.
Sie können die IronXL-Bibliothek mit den folgenden Methoden herunterladen und installieren:
Verwendung von Visual Studio mit NuGet-Paketen
Laden Sie das NuGet-Paket direkt herunter
Manuelle Installation mit der DLL
Schauen wir uns jede einzelne davon genauer an.
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
Dazu können Sie direkt die NuGet-Website besuchen und das Paket herunterladen. Die Schritte sind:
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.
PM > Install-Package IronXL.Excel
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei Program.cs und dann auf Code anzeigen.
using IronXL;
using IronXL;
Imports IronXL
Alles erledigt! IronXL ist heruntergeladen, installiert und einsatzbereit. Vorher sollten wir jedoch CsvHelper installieren.
Um mit CSVWriter arbeiten zu können, müssen Sie die CsvHelper C# Bibliothek herunterladen und installieren. Führen Sie dazu die folgenden Schritte aus, um das NuGet-Paket über die Eingabeaufforderung für Entwickler zu installieren.
PM> Install-Package CsvHelper -Version 27.2.1
Download von der NuGet-Website: https://www.nuget.org/packages/CsvHelper/
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, aber IronXL bietet eine ziemlich gute und einfache Möglichkeit, dies zu erreichen, ohne Microsoft Excel zu verwenden. Konvertieren wir zunächst eine CSV-Datei in eine normale Excel-Datei.
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")
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")
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")
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
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()
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
Das Schreiben von Daten in eine CSV-Datei ist ein gängiger Vorgang. CSVHelper-Methode CSVWriter mit gelieferten Trennzeichen alle Zeichen und neue Zeile Zeichen können in einem sehr einfachen CSV Writer für C# freigegeben behandelt werden. Hier werden wir uns ansehen, wie man Daten mit CSVWriter schreibt.
Erstellen Sie einen einfachen CSVWriter mit mitgelieferter Separator-Konsolenanwendung mit Visual Studio. Sobald das Projekt erstellt ist, besteht der nächste Schritt darin, eine Personenklasse zu erstellen:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsLiving { get; set; }
}
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsLiving { get; set; }
}
Public Class Person
Public Property Id() As Integer
Public Property Name() As String
Public Property IsLiving() As Boolean
End Class
In der Main-Methode erstellen wir nun eine Liste von Person-Objekten, die wir in die CSV-Datei schreiben werden:
var myPersonObjects = new List<Person>()
{
new Person { Id = 1, IsLiving = true, Name = "John" },
new Person { Id = 2, IsLiving = true, Name = "Steve" },
new Person { Id = 3, IsLiving = true, Name = "James" }
};
var myPersonObjects = new List<Person>()
{
new Person { Id = 1, IsLiving = true, Name = "John" },
new Person { Id = 2, IsLiving = true, Name = "Steve" },
new Person { Id = 3, IsLiving = true, Name = "James" }
};
Dim myPersonObjects = New List(Of Person)() From {
New Person With {
.Id = 1,
.IsLiving = True,
.Name = "John"
},
New Person With {
.Id = 2,
.IsLiving = True,
.Name = "Steve"
},
New Person With {
.Id = 3,
.IsLiving = True,
.Name = "James"
}
}
CsvHelper hat sich als Standardmethode zum Schreiben von CSV in C# unter Verwendung der CSVWriter-Methode durchgesetzt und ist sehr einfach zu verwenden:
using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(myPersonObjects);
}
using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(myPersonObjects);
}
Using writer = New StreamWriter("filePersons.csv")
Using csv = New CsvWriter(writer, CultureInfo.InvariantCulture)
csv.WriteRecords(myPersonObjects)
End Using
End Using
Wir müssen bedenken, dass jedes Mal, wenn wir unser Programm ausführen, alte CSV-Dateien überschrieben werden. Manchmal möchten wir, dass die Daten am Ende einer Datei angehängt werden, anstatt vorhandene Daten zu überschreiben. CSVWriter bietet keine Methode dafür, da das Öffnen/Schreiben einer Datei nicht in der Verantwortung von CSVWriter mit mitgeliefertem Trennzeichen liegt. Wir können dies erreichen, indem wir einen FileStream verwenden und dann unseren StreamWriter unter Verwendung dieses FileStreams konstruieren. Obwohl dies nicht in den Rahmen dieses Artikels fällt, zeige ich Ihnen, wie man es macht, da es ein wesentlicher Bestandteil jeder Anwendung ist.
var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
csv.WriteRecords(myPersonObjects);
}
var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
csv.WriteRecords(myPersonObjects);
}
Dim configPersons = New CsvConfiguration(CultureInfo.InvariantCulture) With {.HasHeaderRecord = False}
Using stream = File.Open("filePersons.csv", FileMode.Append)
Using writer = New StreamWriter(stream)
Using csv = New CsvWriter(writer, configPersons)
csv.WriteRecords(myPersonObjects)
End Using
End Using
End Using
Das Anhängen an eine bestehende Datei ist jedoch nicht ganz einfach, da sich die Reihenfolge beim Anhängen ändern kann oder neue Eigenschaften hinzugefügt wurden. Wir sollten dies beim Anhängen berücksichtigen.
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.
CSVWriter mit mitgeliefertem Trennzeichen ist ein Komma-getrenntes Element und für die kommerzielle Nutzung völlig kostenlos.
IronXL ist eine vollständige Bibliothek, die alles bietet, was Sie brauchen, um eine Excel-Datei zu bearbeiten. Es bietet Ihnen die Möglichkeit, verschiedene Formate in XLSX zu konvertieren, und auch von XLSX in andere Formate, wie CSV. Diese Interkonvertierung bietet dem Benutzer die Flexibilität, andere Dateiformate mit Leichtigkeit zu bearbeiten.
Andererseits arbeitet CSVWriter nur mit CSV-Dateiformaten und mit sehr begrenzten Optionen. Die Benutzer können nicht zwischen verschiedenen Dateiformaten wechseln, während dies bei IronXL möglich ist. Alle Codebeispiele sind in den CsvHelper-Dokumentationsdateien zu finden. Dieses Dokument enthält Richtlinien für die Verwendung von CSVWriter in Ihrem Projekt.
IronXL hat einen klaren Vorteil gegenüber CSVHelper.CSVWriter, da es die Arbeit mit mehreren Formaten unterstützt. Darüber hinaus können Sie Formeln und Stile nach Ihren Wünschen anwenden, während CsvHelper nur das Lesen und Schreiben von CSV-Dateien ermöglicht, und das mit begrenzten Optionen. Außerdem können Sie keine neuen Datensätze an eine bestehende CSV-Datei anhängen, da dies die vorherigen Einträge einfach überschreibt.
9 .NET API-Produkte für Ihre Bürodokumente