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);
EPPlus Read Excel to Datatable C# (IronXL Tutorial)
Regan Pun
16. Mai 2023
Teilen Sie:
Suchen Sie nach einer Excel-Bibliothek, um Exceldaten in eine DataTable in C# einzulesen?
Das Einlesen von Excel-Dateien in ein DataTable in C# hat mehrere praktische Anwendungen in verschiedenen Branchen und Bereichen, wie beispielsweise Datenanalyse und -berichterstattung, Importieren von Daten in Datenbanken, Datenmigration, Datenvalidierung und -bereinigung, Integration mit anderen Systemen, Automatisierung und Stapelverarbeitung.
In diesem Artikel werden wir zwei verschiedene Excel-Bibliotheken für .NET Core in C# besprechen und vergleichen, die diese Funktion bieten, um Excel-Daten und Excel-Dateien in eine DataTable einzulesen. Die Bibliotheken sind
EPPlus
IronXL
1. EPPlus-Bibliothek
EPPlus ist eine leistungsstarke Open-Source-Bibliothek zur Erstellung und Bearbeitung von Excel-Dateien in C#. Es bietet eine einfache und intuitive API, die es Entwicklern ermöglicht, Excel-Tabellen programmatisch zu erstellen, zu lesen und zu ändern, ohne dass Microsoft Office oder Excel auf dem Server oder den Client-Rechnern installiert sein muss. Mit EPPlus können Sie auf einfache Weise Arbeitsblätter erstellen, Daten hinzufügen, Formatierungen vornehmen, Diagramme erstellen und andere Operationen mit Excel-Dateien durchführen. Es unterstützt sowohl das ältere .xls-Format als auch das neuere .xlsx-Format und bietet eine effiziente Leistungs- und Speicherverwaltung. Ganz gleich, ob Sie dynamische Berichte erstellen, Daten importieren/exportieren oder Excel-bezogene Aufgaben automatisieren möchten, EPPlus bietet eine umfassende Reihe von Funktionen und Möglichkeiten, um die Handhabung von Excel-Dateien in C#-Anwendungen zu vereinfachen.
2. IronXL
IronXL ist eine leistungsstarke und vielseitige Bibliothek, die Entwicklern die Möglichkeit bietet, Excel-Dateien innerhalb ihrer .NET-Anwendungen mühelos zu lesen, zu schreiben und zu manipulieren. Mit seiner intuitiven und umfassenden API vereinfacht IronXL den sonst so komplexen Prozess der Arbeit mit Tabellenkalkulationen und ermöglicht es Entwicklern, nahtlos Daten zu extrahieren, Berechnungen durchzuführen, Diagramme zu erstellen und Berichte zu generieren. Ob es um die Automatisierung von Datenimport/-exportaufgaben, die Durchführung von Datenanalysen oder die Erstellung dynamischer Excel-Vorlagen geht, IronXL bietet eine robuste Lösung, die Entwicklern wertvolle Zeit und Mühe erspart und gleichzeitig Genauigkeit und Zuverlässigkeit bei der Verarbeitung von Excel-Daten gewährleistet. Mit seiner nahtlosen Integration, der ausführlichen Dokumentation und der breiten Palette an Funktionen ist IronXL die erste Wahl für Entwickler, die ein zuverlässiges und effizientes Tool suchen, um die mit der Excel-Dateibearbeitung im .NET-Framework verbundenen Herausforderungen zu meistern.
3. Installation der EPPlus-Bibliothek
Um die EPPlus-Bibliothek in Ihrem C#-Projekt zu installieren, müssen Sie zunächst ein neues konsolenbasiertes Projekt in Visual Studio erstellen. Danach können Sie es einfach mit dem NuGet Package Manager installieren.
Sobald das neue Projekt erstellt ist, gehen Sie zu Tools und fahren Sie mit dem Mauszeiger über den NuGet Package Manager, dann wählen Sie "Manage NuGet Packages for Solution".
Es erscheint ein neues Fenster. Wählen Sie in diesem neuen Fenster die Option "Durchsuchen" und suchen Sie nach "EPPlus". Es wird eine Liste der Pakete angezeigt, und Sie sollten die neueste stabile Version auswählen. Klicken Sie dann auf die Schaltfläche "Installieren" auf der rechten Seite, um die EPPlus-Bibliothek zu installieren.
Auf diese Weise wird EPPlus zu Ihrem Projekt hinzugefügt.
4. Installation von IronXL
Es gibt viele Methoden, IronXL zu installieren, aber in diesem Abschnitt werden wir nur die Installation von IronXL über den NuGet Package Manager behandeln.
Erstellen Sie wie in Abschnitt 3 ein neues Projekt, gehen Sie zu "Tools" und öffnen Sie den NuGet Package Manager für Lösungen.
Geben Sie im neuen Fenster das Stichwort "IronXL" in die Suchleiste ein. Es erscheint eine Liste, aus der Sie das IronXL-Paket auswählen können, das Sie installieren möchten. Klicken Sie dann auf die Schaltfläche "Installieren", um IronXL in Ihrem Projekt zu installieren.
IronXL ist jetzt einsatzbereit.
5. Lesen von Excel-Dateien und Daten in Datentabellen mit der EPPlus-Bibliothek
In diesem Abschnitt werden wir den Code untersuchen, um Excel als DataTable mithilfe der C# EPPlus-Paket-Excel-Bibliothek zu lesen.
Wir benötigen eine Beispiel-Excel-Datei, um sie als DataTable zu lesen. Zu diesem Zweck werden wir eine Excel-Beispieldatei erstellen.
Nachfolgend ist der Code zum Lesen der Excel-Datei als DataTable aufgeführt.
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main(string [] args)
{
var path = @"sample.xlsx";
var data = ExcelDataToDataTable(path, "Table");
foreach (DataRow row in data.Rows)
{
foreach (var wsrow in row.ItemArray)
{
Console.Write(wsrow);
}
Console.WriteLine();
}
}
public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
{
DataTable dt = new DataTable();
var fi = new FileInfo(filePath);
// Check if the file exists
if (!fi.Exists)
throw new Exception("File " + filePath + " Does Not Exists");
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
var xlPackage = new ExcelPackage(fi);
// get the first worksheet in the workbook
var worksheet = xlPackage.Workbook.Worksheets [sheetName];
dt = worksheet.Cells [1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
{
c.FirstRowIsColumnNames = true;
});
return dt;
}
}
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main(string [] args)
{
var path = @"sample.xlsx";
var data = ExcelDataToDataTable(path, "Table");
foreach (DataRow row in data.Rows)
{
foreach (var wsrow in row.ItemArray)
{
Console.Write(wsrow);
}
Console.WriteLine();
}
}
public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
{
DataTable dt = new DataTable();
var fi = new FileInfo(filePath);
// Check if the file exists
if (!fi.Exists)
throw new Exception("File " + filePath + " Does Not Exists");
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
var xlPackage = new ExcelPackage(fi);
// get the first worksheet in the workbook
var worksheet = xlPackage.Workbook.Worksheets [sheetName];
dt = worksheet.Cells [1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
{
c.FirstRowIsColumnNames = true;
});
return dt;
}
}
Imports OfficeOpenXml
Imports System
Imports System.Data
Imports System.IO
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim path = "sample.xlsx"
Dim data = ExcelDataToDataTable(path, "Table")
For Each row As DataRow In data.Rows
For Each wsrow In row.ItemArray
Console.Write(wsrow)
Next wsrow
Console.WriteLine()
Next row
End Sub
Public Shared Function ExcelDataToDataTable(ByVal filePath As String, ByVal sheetName As String, Optional ByVal hasHeader As Boolean = True) As DataTable
Dim dt As New DataTable()
Dim fi = New FileInfo(filePath)
' Check if the file exists
If Not fi.Exists Then
Throw New Exception("File " & filePath & " Does Not Exists")
End If
ExcelPackage.LicenseContext = LicenseContext.NonCommercial
Dim xlPackage = New ExcelPackage(fi)
' get the first worksheet in the workbook
Dim worksheet = xlPackage.Workbook.Worksheets (sheetName)
dt = worksheet.Cells (1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column).ToDataTable(Sub(c)
c.FirstRowIsColumnNames = True
End Sub)
Return dt
End Function
End Class
$vbLabelText $csharpLabel
Der obige Code ruft eine Methode auf, die Eingabeparameter wie den Dateipfad und den Blattnamen entgegennimmt und ein DataTable als Ausgabe zurückgibt.
5.1. Ausgabe
6. Lesen von Excel-Dateien als Datentabelle mit IronXL
Die Konvertierung eines Excel-Blattes und das Einlesen als DataTable ist mit IronXL ganz einfach, mit nur wenigen Zeilen Code. Außerdem werden wir die vorherige Excel-Datei als Eingabe verwenden.
Das folgende Codebeispiel führt die gleiche Funktionalität wie der obige Code aus, verwendet aber IronXL.
using IronXL;
using System;
using System.Data;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
DataTable Table = workSheet.ToDataTable(true);
foreach (DataRow row in Table.Rows)
{
for (int row = 0; row < dataTable.Columns.Count; row ++)
{
Console.Write(row [row ] + " ");
}
Console.WriteLine();
}
using IronXL;
using System;
using System.Data;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
DataTable Table = workSheet.ToDataTable(true);
foreach (DataRow row in Table.Rows)
{
for (int row = 0; row < dataTable.Columns.Count; row ++)
{
Console.Write(row [row ] + " ");
}
Console.WriteLine();
}
Imports IronXL
Imports System
Imports System.Data
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet
Private Table As DataTable = workSheet.ToDataTable(True)
For Each row As DataRow In Table.Rows
For row As Integer = 0 To dataTable.Columns.Count - 1
Console.Write(row (row) & " ")
Next row
Console.WriteLine()
Next row
$vbLabelText $csharpLabel
Im obigen Codebeispiel laden wir einfach die Excel-Datei und konvertieren sie mithilfe der Methode workSheet.ToDataTable(true) in eine DataTable.
6.1 Ausgang
7. Schlussfolgerung
Zusammenfassend lässt sich sagen, dass sowohl EPPlus als auch IronXL hervorragende Bibliotheken sind, die leistungsstarke Funktionen bieten und den Prozess vereinfachen, wenn es darum geht, Excel-Dateien zu lesen und in C# in DataTable zu konvertieren.
EPPlus ist eine Open-Source-Bibliothek, die eine einfache API für das programmatische Erstellen, Lesen und Ändern von Excel-Tabellen bereitstellt. Es unterstützt sowohl das .xls- als auch das .xlsx-Format und bietet eine effiziente Leistungs- und Speicherverwaltung.
Andererseits ist IronXL eine vielseitige Bibliothek, die es Entwicklern ermöglicht, mühelos mit Excel-Dateien in .NET-Anwendungen zu arbeiten. Es bietet eine intuitive API und umfassende Funktionen zum Extrahieren von Daten, Durchführen von Berechnungen, Erstellen von Diagrammen und Erstellen von Berichten. IronXL vereinfacht komplexe Excel-Dateimanipulationsaufgaben, wie z. B. Datenimport/-export, Datenanalyse und dynamische Vorlagenerstellung.
Vergleicht man die Codebeispiele von IronXL und EPPlus, so stellt man fest, dass der EPPlus-Code recht lang, komplex und schwer zu lesen ist. Andererseits ist der IronXL-Code recht einfach und leicht zu lesen. IronXL verwendet das Standard-Arbeitsblatt, aber in EPPlus müssen Sie den Namen des Arbeitsblatts angeben, sonst erhalten Sie eine Fehlermeldung.
Zusammenfassend würde ich IronXL gegenüber EPPlus für die Manipulation von Excel-Dateien und das Lesen von Excel-Dateien als DataTables empfehlen. Außerdem bietet IronXL viel mehr Funktionen als EPPlus bei der Bearbeitung von Excel-Dateien mit einfachem Code. Für weitere Tutorials zu IronXL besuchen Sie bitte den folgenden Link.
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 Zip-Archiv-Tutorial für C#-Entwickler mit IronXL
NÄCHSTES > Ein Vergleich zwischen IronXL und FastExcel for .NET