Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN
Ein Vergleich von NPOI vs IronXL

Ein Vergleich von IronXL und NPOI

Wie Sie vielleicht wissen, ist Excel wahrscheinlich die am häufigsten verwendete Tabellenkalkulationsanwendung der Welt. Zu den Nutzern gehören sowohl Entwickler als auch die Allgemeinheit, aber es sind die Entwickler, die wahrscheinlich mehr an diesem Artikel interessiert sein werden. Anfangs gab es nicht viele Möglichkeiten für Entwickler, mit Excel in ihren verschiedenen Anwendungen zu arbeiten. Es gab jedoch VBA (Visual Basic for Applications) in der Office-Suite, mit denen Sie jedes Office-Produkt nach Ihren Bedürfnissen manipulieren konnten.

Entwickler verwendeten VBA in Excel, um ihre Interaktionen mit Excel und dessen Daten, sogar dessen visuelle Fähigkeiten, anzupassen. Aber irgendwann war das nicht mehr ausreichend. Entwickler wollten mehr, und so begannen sie, Office.Interop zu verwenden.

In diesem Artikel werde ich zwei sehr gute Excel-Bibliotheken vergleichen, die nicht auf Office.Interop angewiesen sind, um mit Excel zu arbeiten. Diese sind:

Diese fünf Werkzeuge sind die folgenden:

  • NPOI

Sie werden sehen und lernen, was jede Excel-Bibliothek leisten kann, und dann die beiden Bibliotheken anhand von Code-Beispielen und Schritt-für-Schritt-Anleitungen vergleichen. Obwohl dieser Artikel nicht alle Funktionen beider Excel-Bibliotheken abdecken kann, wird er die gebräuchlichsten und beliebtesten Einsatzmöglichkeiten jeder erläutern.

class="hsg-featured-snippet">

Wie man NPOI für Excel in C# verwendet

  1. Installieren Sie die C#-Bibliothek, um Excel mit NPOI zu lesen
  2. Instanziieren Sie ein XSSFWorkbook-Objekt, um die Excel-Datei zu speichern
  3. Holen Sie sich mit der Methode GetSheetAt ein spezifisches Arbeitsblatt
  4. Zugriff auf jede Zeile durch Übergeben des Zeilenindex an die Methode GetRow
  5. Greifen Sie mit der Methode GetCell auf jede Zelle in der Zeile zu

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 eine breite Palette von Anwendungen.

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 zu generieren

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.

IronXL und Excel

IronXL ist eine Excel-API für VB und C#. Mit IronXL können Sie Excel-Tabellendateien in .NET lesen, bearbeiten und erstellen.

Gemeinsame Bibliotheksfunktionen für die NPOI- und IronXL-Excel-Bibliotheken

NPOI IronXL
Zellbereiche Zellbereiche
Zellgestaltung (Rand, Farbe, Füllung, Schriftart, Nummer, Ausrichtungen) Visuelle Zellstile Schriftart, Größe, Hintergrundmuster, Rand, Ausrichtung und Zahlenformate.
Formelberechnung Formeln
Datenvalidierung Datenvalidierung
Bedingte Formatierung Bedingte Formatierung
Bilder Bilder
Diagramme Diagramme

class="content__image-caption">Tabelle 1 - Funktionsvergleich


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 ist ein kurzer Überblick.

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
class="content-img-align-center"> Grafische BenutzeroberflächeBeschreibung automatisch generiert

class="content__image-caption">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:

  • Klicken Sie mit der rechten Maustaste auf das Projekt im Solution Explorer
  • Wählen Sie NuGet-Pakete verwalten
  • Suchen Sie nach Ihrem Paket
  • Klicken Sie auf Installieren
class="content-img-align-center"> Ein Screenshot eines ComputersBeschreibung automatisch generiert

class="content__image-caption">Abbildung 2 - NuGet Paket-Manager für NPOI

IronXL-Installation

Herunterladen von IronXL

To download IronXL, navigate to the following URL and click the "Download" button.

class="content-img-align-center"> Download IronXL

class="content__image-caption">Abbildung 3 - Download IronXL

Installieren von IronXL mit NuGet

Verwenden Sie diese Schritte, um IronXL über den NuGet Package Manager in Visual Studio zu installieren:

Install-Package IronXL.Excel -Version x.x.x
class="content-img-align-center"> NuGet IronXL-Installation

class="content__image-caption">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:

  • Klicken Sie mit der rechten Maustaste auf das Projekt im Solution Explorer
  • Wählen Sie NuGet-Pakete verwalten
  • Suchen Sie nach Ihrem Paket
  • Klicken Sie auf Installieren
class="content-img-align-center"> Ein Screenshot eines ComputersBeschreibung automatisch generiert

class="content__image-caption">Abbildung 5 - NuGet Paket-Manager für IronXL

Lesen aus und Schreiben in eine 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Lesen einer Excel-Datei mit IronXL

Der folgende Code zeigt, wie man eine Excel-Datei liest und sie innerhalb einer Datenrasteransicht mit IronXL anzeigt. 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Wie Sie sehen, ergeben all diese Schritte viel weniger Arbeit.

Abschluss

Also warum IronXL? Wie Sie sehen, hat IronXL eine einfach zu verwendende API, die Ihren Code sauber hält. Bibliotheken, die IronXL verwenden, bieten sauberen, lesbaren Code, der sich auszahlt, indem er die Zeit und den Aufwand reduziert, die benötigt werden, um zu verstehen, was der Code macht und es ermöglicht, ihn zu ändern, ohne etwas zu beschädigen.

IronXL ist rundum intuitiver und dabei genauso leistungsfähig wie NPOI. Und natürlich erhalten Sie mit einem Lizenzschlüssel Zugriff auf den wichtigsten Vorteil von kostenpflichtiger Software: Sie erhalten unseren professionellen Support, konsistente und zuverlässige Update-Zeitpläne und die Möglichkeit, Funktionen von Iron Software-Supportmitarbeitern anzufordern, die Ihnen gerne helfen. Dies ist etwas, das Open Source einfach nicht bieten kann.

IronXL vs Aspose.Cells Beispiel

IronXL ist ideal für diejenigen, die Tabellen unabhängig erstellen und bearbeiten möchten, ohne stark auf andere Programme wie Excel oder Google Docs angewiesen zu sein, besonders wenn Sie umfangreiche Daten haben, die schnell bearbeitet werden müssen!

IronXL vs NPOI Beispiel

Hinweis:NPOI ist ein eingetragenes Warenzeichen seines jeweiligen Eigentümers. Diese Seite ist weder verbunden mit, noch genehmigt oder gesponsert von NPOI. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

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 sind.

Wie unterscheidet sich NPOI von IronXL bei der Bearbeitung von Excel-Dateien?

NPOI ist eine Open-Source-Bibliothek auf Basis des Apache POI Projekts zur Verwaltung von Excel-Dateien ohne Microsoft Office. IronXL bietet jedoch eine intuitivere API, professionellen Support und regelmäßige Updates, was es für kommerzielle Anwendungen geeignet macht.

Wie ist der Prozess der Konvertierung eines Excel-Arbeitsblatts in eine DataTable mit IronXL?

Um ein Excel-Arbeitsblatt in eine DataTable mit IronXL zu konvertieren, laden Sie das Workbook mit WorkBook.Load, greifen auf das gewünschte Arbeitsblatt zu und verwenden die verfügbare Methode, um es für die weitere Verwendung in eine DataTable 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 saubere und intuitive API bietet, die Aufgaben wie das Lesen, Bearbeiten und Erstellen von Excel-Dateien erleichtert, ohne dass Microsoft Office-Installationen erforderlich sind.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen