Ein Vergleich von IronXL und NPOI
IronXL und NPOI sind beides .NET Excel-Bibliotheken, die ohne Office.Interop funktionieren – es ist keine Installation von Microsoft Excel erforderlich. Dieser Vergleich umfasst ihre APIs zum Lesen, Schreiben und Bearbeiten von Excel-Dateien und enthält Codebeispiele für die Operationen, die Entwickler am häufigsten antreffen.
Wie verwendet man NPOI für Excel in C#?
- C#-Bibliothek zum Lesen von Excel mit NPOI installieren
- Instanziieren Sie das XSSFWorkbook Objekt, um eine Excel-Datei zu speichern
- Bestimmtes Arbeitsblatt mit der Methode
GetSheetAtabrufen - Zugriff auf jede Zeile durch Übergabe des Zeilenindex an die Methode
GetRow - Zugriff auf jede Zelle in einer Zeile mit der Methode
GetCell
Was ist NPOI?
NPOI is the .NET version of the POI Java project at http://poi.apache.org/. POI ist ein Open-Source-Projekt, das Ihnen helfen kann, xls-, doc- und ppt-Dateien zu lesen/schreiben. Es hat ein breites Anwendungsspektrum.
Zum Beispiel können Sie es verwenden, um:
- Einen Excel-Bericht zu erstellen, ohne dass die Microsoft Office-Suite auf Ihrem Server installiert ist und effizienter als der Aufruf von Microsoft Excel ActiveX im Hintergrund
- Text aus Office-Dokumenten zu extrahieren, um Ihnen dabei zu helfen, eine Volltext-Indexierungsfunktion zu implementieren (diese Funktion wird oft verwendet, um Suchmaschinen zu erstellen)
- Bilder aus Office-Dokumenten zu extrahieren
- Excel-Tabellen mit Formeln erstellen
NPOI und Excel
NPOI is a C# port of the POI Java project by Apache. Es ist kostenlos und Open-Source. Außerdem benötigt es kein Interop, was bedeutet, dass Benutzer Excel nicht installiert haben müssen, damit die Anwendung des Entwicklers damit arbeiten kann.
Sie können beide Bibliotheken manuell herunterladen, über NuGet installieren oder den NuGet-Paket-Manager in Visual Studio verwenden. IronXL ist eine Excel-API für VB und C#. Mit IronXL können Sie Excel-Tabellendateien in .NET lesen, bearbeiten und erstellen.
Wie schneiden NPOI und IronXL im Vergleich ab?
| NPOI | IronXL |
|---|---|
| Zellbereiche | Zellbereiche |
| Zellgestaltung (Rahmen, Farbe, Füllung, Schriftart, Nummerierung, Ausrichtungen) | Visuelle Zellstile: Schriftart, Größe, Hintergrundmuster, Rahmen, Ausrichtung und Zahlenformate. |
| Formelberechnung | Formeln |
| Datenvalidierung | Datenvalidierung |
| Bedingte Formatierung | Bedingte Formatierung |
| Bilder | Bilder |
| Diagramme | Diagramme |
Tabelle 1 - Funktionsvergleich
Teams, die IronXL als NPOI-Alternative evaluieren, können die vollständige API mit einer kostenlosen 30-Tage-Testversion testen.
Installation von IronXL und NPOI
Sie können beide Bibliotheken herunterladen manuell, über NuGet oder mit dem NuGet-Paket-Manager in Visual Studio installieren. Hier ein kurzer Überblick; Eine Schritt-für-Schritt-Anleitung finden Sie im IronXL-Einführungshandbuch.
NPOI-Installation
NPOI-Installation mit NuGet
Um NPOI über NuGet zu installieren, öffnen Sie die Visual Studio Entwickler-Befehlszeile und geben Sie folgendes ein:
Install-Package NPOI -Version x.x.x
Abbildung 1 - NuGet NPOI Installation
Visual Studio NuGet Paket-Manager und NPOI
Verwenden Sie die folgenden Schritte, um IronXL oder NPOI über den NuGet-Paket-Manager in Visual Studio zu installieren:
- Rechtsklick auf das Projekt im Solution Explorer
- Wählen Sie NuGet-Pakete verwalten
- Suchen Sie nach Ihrem Paket
- Klicken Sie auf Installieren
Abbildung 2 - NuGet-Paketmanager für NPOI
IronXL-Installation
Herunterladen von IronXL
To download IronXL, navigate to the following URL and click the "Download" button.
Abbildung 3 - IronXL herunterladen
Installieren von IronXL mit NuGet
Um IronXL über NuGet zu installieren, öffnen Sie die Entwickler-Eingabeaufforderung von Visual Studio und geben Sie Folgendes ein:
Install-Package IronXl.Excel -Version x.x.x
Abbildung 4 - NuGet IronXL Installation
Visual Studio NuGet Paket-Manager und IronXL
Verwenden Sie die folgenden Schritte, um IronXL über den NuGet-Paket-Manager in Visual Studio zu installieren:
- Rechtsklick auf das Projekt im Solution Explorer
- Wählen Sie NuGet-Pakete verwalten
- Suchen Sie nach Ihrem Paket
- Klicken Sie auf Installieren
Abbildung 5 - NuGet-Paketmanager für IronXL
Lesen und Schreiben einer Excel-Datei mit NPOI und IronXL
Lesen einer Excel-Datei mit NPOI
Der folgende Code zeigt, wie man eine Excel-Datei liest und deren Inhalt mit NPOI anzeigt. Fügen Sie den folgenden Code hinzu und schließen Sie die erforderlichen Namensräume ein:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;
using System.Collections.Generic;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;
using System.Collections.Generic;
Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
Imports System.Data
Imports System.IO
Imports System.Collections.Generic
Der folgende Code liest eine bestehende Excel-Datei und zeigt sie innerhalb einer Datenrasteransicht an.
public void ReadExcelNPOI()
{
DataTable dtTable = new DataTable();
List<string> lstRows = new List<string>();
ISheet objWorksheet;
string strPath = @"c:\temp\NPOI_Test.XLSX";
// Use FileStream to open the Excel file
using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
fStream.Position = 0;
XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream);
objWorksheet = objWorkbook.GetSheetAt(0);
IRow objHeader = objWorksheet.GetRow(0);
int countCells = objHeader.LastCellNum;
// Add columns to the DataTable based on the header row of Excel
for (int j = 0; j < countCells; j++)
{
ICell objCell = objHeader.GetCell(j);
if (objCell == null || string.IsNullOrWhiteSpace(objCell.ToString())) continue;
{
dtTable.Columns.Add(objCell.ToString());
}
}
// Add rows to the DataTable, looping through each row and cell
for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
{
IRow objRow = objWorksheet.GetRow(i);
if (objRow == null || objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
for (int j = objRow.FirstCellNum; j < countCells; j++)
{
ICell cell = objRow.GetCell(j);
if (cell != null && !string.IsNullOrEmpty(cell.ToString()) && !string.IsNullOrWhiteSpace(cell.ToString()))
{
lstRows.Add(cell.ToString());
}
}
if (lstRows.Count > 0)
dtTable.Rows.Add(lstRows.ToArray());
lstRows.Clear();
}
}
// Assuming dataGridView1 is a DataGridView control on a Form
dataGridView1.DataSource = dtTable;
}
private void button1_Click(object sender, EventArgs e)
{
ReadExcelNPOI();
}
public void ReadExcelNPOI()
{
DataTable dtTable = new DataTable();
List<string> lstRows = new List<string>();
ISheet objWorksheet;
string strPath = @"c:\temp\NPOI_Test.XLSX";
// Use FileStream to open the Excel file
using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
fStream.Position = 0;
XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream);
objWorksheet = objWorkbook.GetSheetAt(0);
IRow objHeader = objWorksheet.GetRow(0);
int countCells = objHeader.LastCellNum;
// Add columns to the DataTable based on the header row of Excel
for (int j = 0; j < countCells; j++)
{
ICell objCell = objHeader.GetCell(j);
if (objCell == null || string.IsNullOrWhiteSpace(objCell.ToString())) continue;
{
dtTable.Columns.Add(objCell.ToString());
}
}
// Add rows to the DataTable, looping through each row and cell
for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
{
IRow objRow = objWorksheet.GetRow(i);
if (objRow == null || objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
for (int j = objRow.FirstCellNum; j < countCells; j++)
{
ICell cell = objRow.GetCell(j);
if (cell != null && !string.IsNullOrEmpty(cell.ToString()) && !string.IsNullOrWhiteSpace(cell.ToString()))
{
lstRows.Add(cell.ToString());
}
}
if (lstRows.Count > 0)
dtTable.Rows.Add(lstRows.ToArray());
lstRows.Clear();
}
}
// Assuming dataGridView1 is a DataGridView control on a Form
dataGridView1.DataSource = dtTable;
}
private void button1_Click(object sender, EventArgs e)
{
ReadExcelNPOI();
}
Public Sub ReadExcelNPOI()
Dim dtTable As New DataTable()
Dim lstRows As New List(Of String)()
Dim objWorksheet As ISheet
Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
' Use FileStream to open the Excel file
Using fStream = New FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
fStream.Position = 0
Dim objWorkbook As New XSSFWorkbook(fStream)
objWorksheet = objWorkbook.GetSheetAt(0)
Dim objHeader As IRow = objWorksheet.GetRow(0)
Dim countCells As Integer = objHeader.LastCellNum
' Add columns to the DataTable based on the header row of Excel
For j As Integer = 0 To countCells - 1
Dim objCell As ICell = objHeader.GetCell(j)
If objCell Is Nothing OrElse String.IsNullOrWhiteSpace(DirectCast(objCell, Object).ToString()) Then
Continue For
End If
If True Then
dtTable.Columns.Add(DirectCast(objCell, Object).ToString())
End If
Next j
' Add rows to the DataTable, looping through each row and cell
For i As Integer = (objWorksheet.FirstRowNum + 1) To objWorksheet.LastRowNum
Dim objRow As IRow = objWorksheet.GetRow(i)
If objRow Is Nothing OrElse objRow.Cells.All(Function(d) d.CellType = CellType.Blank) Then
Continue For
End If
For j As Integer = objRow.FirstCellNum To countCells - 1
Dim cell As ICell = objRow.GetCell(j)
If cell IsNot Nothing AndAlso Not String.IsNullOrEmpty(DirectCast(cell, Object).ToString()) AndAlso Not String.IsNullOrWhiteSpace(DirectCast(cell, Object).ToString()) Then
lstRows.Add(DirectCast(cell, Object).ToString())
End If
Next j
If lstRows.Count > 0 Then
dtTable.Rows.Add(lstRows.ToArray())
End If
lstRows.Clear()
Next i
End Using
' Assuming dataGridView1 is a DataGridView control on a Form
dataGridView1.DataSource = dtTable
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
ReadExcelNPOI()
End Sub
Lesen einer Excel-Datei mit IronXL
Der folgende Code zeigt, wie man eine Excel-Datei liest und sie innerhalb einer Datenrasteransicht mit IronXL anzeigt. Weitere IronXL -Codebeispiele finden Sie in der Dokumentation. Fügen Sie den folgenden Code hinzu und schließen Sie den Namensraum ein:
using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
Beachten Sie die Einbindung von IronXL. Dies ist notwendig, damit IronXL funktioniert. Fügen Sie die nächsten Zeilen hinzu:
private void button2_Click(object sender, EventArgs e)
{
// Load the Excel workbook
string strPath = @"c:\temp\NPOI_Test.XLSX";
WorkBook workbook = WorkBook.Load(strPath);
// Access the default worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert the worksheet to a DataTable
var dtTable = sheet.ToDataTable(true);
// Assuming dataGridView1 is a DataGridView control on a Form
dataGridView1.DataSource = dtTable;
}
private void button2_Click(object sender, EventArgs e)
{
// Load the Excel workbook
string strPath = @"c:\temp\NPOI_Test.XLSX";
WorkBook workbook = WorkBook.Load(strPath);
// Access the default worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert the worksheet to a DataTable
var dtTable = sheet.ToDataTable(true);
// Assuming dataGridView1 is a DataGridView control on a Form
dataGridView1.DataSource = dtTable;
}
Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs)
' Load the Excel workbook
Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
Dim workbook As WorkBook = WorkBook.Load(strPath)
' Access the default worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert the worksheet to a DataTable
Dim dtTable = sheet.ToDataTable(True)
' Assuming dataGridView1 is a DataGridView control on a Form
dataGridView1.DataSource = dtTable
End Sub
Wie Sie sehen können, reduziert IronXL den Lese- und Anzeigevorgang auf etwa 5 Codezeilen im Vergleich zu den über 40 Zeilen von NPOI und eliminiert damit die manuelle Zeileniteration und die zellenweise Extraktionsschleife vollständig. In den vollständigen Funktionshandbüchern von IronXL finden Sie optimierte Lösungsansätze für gängige Excel-Aufgaben.
Welche Bibliothek sollten Sie wählen?
NPOI bietet eine solide, etablierte Open-Source-Grundlage für die Excel-Manipulation in .NET – seine Herkunft als Portierung von Apache POI bedeutet, dass es von jahrelangen Beiträgen der Community und einer breiten Formatabdeckung profitiert. Für Teams, deren Hauptanforderung das Lesen und Schreiben von Tabellenkalkulationen in einem kostenlosen, von der Community entwickelten Paket ist, ist NPOI eine verlässliche Wahl.
Häufig stoßen Teams auf Reibungspunkte bei der Menge an Standardcode, die NPOI für gängige Vorgänge benötigt. Wie das obige Beispiel zum Einlesen einer Datei zeigt, benötigt der Ansatz von IronXL etwa 5 Codezeilen, während NPOI für die gleiche Operation – das Laden einer Arbeitsmappe und deren Anzeige in einem Datenraster – mehr als 40 Zeilen benötigt. Dadurch entfällt die manuelle Iterationsschleife über Zeilen und Zellen vollständig. Diese Reduzierung der Codeoberfläche ist eine Investition, die sich durch einfachere Wartung und weniger Versteckmöglichkeiten für Fehler auszahlt.
IronXL beinhaltet außerdem Professional Support, regelmäßige Aktualisierungen und die Möglichkeit, Funktionen direkt von den Ingenieuren von Iron Software anzufordern. Bei gemeinschaftlich getragenen Projekten ergeben sich in dieser Hinsicht unterschiedliche Vor- und Nachteile: breitere Beteiligung der Mitwirkenden, aber weniger vorhersehbare Reaktionszeiten bei konkreten Problemen.
Neben den Lizenzkosten umfassen die Gesamtprojektkosten auch die Entwicklerstunden, die für das Schreiben und Pflegen des zusätzlichen Boilerplate-Codes aufgewendet werden, den die Low-Level-API von NPOI erfordert, sowie für das Debuggen der manuellen Datenzuordnungslogik, die in den obigen Beispielen gezeigt wird. Für Teams, die die Kosten über einen mehrjährigen Projektlebenszyklus hinweg bewerten, übersteigen diese Entwicklungs- und Wartungskosten häufig den Unterschied zwischen Open-Source- und kommerziellen Lizenzen .
Downloads
Dieses Projekt ist auf GitHub verfügbar:
Sind Sie bereit, den Unterschied in Ihrem eigenen Projekt zu sehen? Starten Sie eine kostenlose 30-tägige IronXL-Testversion, um diese Beispiele lokal auszuführen.
Häufig gestellte Fragen
Was ist eine Alternative zur Verwendung von Office.Interop für die Excel-Bearbeitung in C#?
IronXL ist eine Alternative zur Verwendung von Office.Interop für die Excel-Bearbeitung in C#. Es bietet eine benutzerfreundliche API, die es Entwicklern ermöglicht, Excel-Dateien zu erstellen, zu lesen und zu bearbeiten, ohne dass Microsoft Office installiert sein muss.
Wie kann ich Excel-Dateien in PDF in C# konvertieren?
Sie können IronXL verwenden, um Excel-Dateien in C# in PDF zu konvertieren, indem Sie das Excel-Workbook mit WorkBook.Load laden und dann die WorkBook.SaveAs-Methode verwenden, um die Datei im PDF-Format zu speichern.
Was sind die wichtigsten Vorteile der Verwendung von IronXL für die Bearbeitung von Excel-Dateien?
IronXL bietet eine intuitivere API für eine einfachere Code-Wartung, professionellen Support, regelmäßige Updates und die Fähigkeit, Excel-Dateien ohne Microsoft Office zu verwalten, was es zu einer starken Wahl für Entwickler macht.
Kann IronXL über NuGet installiert werden?
Ja, IronXL kann über NuGet installiert werden. Öffnen Sie den Visual Studio Entwickler-Befehlsprompt und geben Sie Install-Package IronXL.Excel -Version x.x.x ein.
Was sind einige gängige Excel-bezogene Aufgaben, die mit IronXL durchgeführt werden können?
Mit IronXL können Entwickler Aufgaben wie das Lesen und Schreiben von Excel-Dateien, das Formatieren von Zellen, die Verwendung von Formeln, die Validierung von Daten, das Anwenden von bedingter Formatierung und die Arbeit mit Bildern und Diagrammen durchführen.
Wie lese ich eine Excel-Datei in C# ohne Microsoft Office?
Mit IronXL können Sie eine Excel-Datei in C# lesen, indem Sie das Workbook mit WorkBook.Load laden, auf das Arbeitsblatt zugreifen und mit einfachen Methoden durch die Zeilen und Zellen iterieren.
Warum IronXL gegenüber Open-Source-Alternativen für die Excel-Bearbeitung wählen?
IronXL bietet eine benutzerfreundlichere API, professionellen Support, regelmäßige Updates und laufende Funktionsanfragen, was Vorteile gegenüber Open-Source-Alternativen wie NPOI darstellt.
Wie unterscheidet sich NPOI von IronXL bei der Manipulation von Excel-Dateien?
NPOI ist eine Open-Source-Bibliothek, die auf dem Apache POI-Projekt basiert, um Excel-Dateien ohne Microsoft Office zu bearbeiten. IronXL bietet jedoch eine intuitivere API, professionellen Support und regelmäßige Updates und ist damit für kommerzielle Anwendungen geeignet.
Wie ist der Prozess zur Umwandlung eines Excel-Arbeitsblatts in eine DataTable mit IronXL?
Um ein Excel-Arbeitsblatt mit IronXL in eine DataTable umzuwandeln, laden Sie die Arbeitsmappe mit WorkBook.Load, greifen auf das gewünschte Arbeitsblatt zu und verwenden Sie die verfügbare Methode, um es in eine DataTable für die weitere Verwendung zu konvertieren.
Wie kann IronXL das Management von Excel-Dateien in .NET-Anwendungen verbessern?
IronXL verbessert das Management von Excel-Dateien in .NET-Anwendungen, indem es eine klare und intuitive API bietet, die Aufgaben wie das Lesen, Bearbeiten und Erstellen von Excel-Dateien erleichtert, ohne auf Microsoft Office-Installationen angewiesen zu sein.




