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 eine Excel-Bibliothek, um Excel-Daten in eine "DataTable" in C# zu lesen?
Das Einlesen von Excel-Dateien in eine "Datentabelle" in C# hat mehrere praktische Anwendungen in verschiedenen Branchen und Bereichen, wie z. B. Datenanalyse und -berichterstattung, Import 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 zum Lesen von Excel-Daten und Excel-Dateien in eine "DataTable" bieten. 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 in ihren .NET-Anwendungen mühelos zu lesen, zu schreiben und zu bearbeiten. 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 wird der Code zum Lesen von Excel als Datentabelle unter Verwendung der Excel-Bibliothek des C# EPPlus-Pakets untersucht.
Wir benötigen eine Excel-Beispieldatei, die als "Datentabelle" gelesen werden soll. Zu diesem Zweck werden wir eine Excel-Beispieldatei erstellen.
Nachfolgend finden Sie den Code zum Lesen der Excel-Datei als Datentabelle.
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 eine "Datentabelle" 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 in eine Datentabelle, indem wir die Funktion "workSheet.ToDataTable" verwenden(wahr)methode.
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 unkomplizierte API zum programmgesteuerten Erstellen, Lesen und Ändern von Excel-Tabellen bietet. Es unterstützt sowohl das .xls- als auch das .xlsx-Format und bietet eine effiziente Leistungs- und Speicherverwaltung.
Andererseits,IronXL ist 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 Bearbeitung von Excel-Dateien und das Lesen von Excel-Dateien als Datentabellen empfehlen. Außerdem bietet IronXL viel mehr Funktionen als EPPlus bei der Bearbeitung von Excel-Dateien mit einfachem Code. Weitere Tutorials zu IronXL finden Sie unter folgenden Linkslink.
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