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

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.

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 Alternative zu NPOI 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 Leitfaden für Einsteiger .

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
Graphical user interfaceDescription automatically generated

**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
A screenshot of a computerDescription automatically generated

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

Download IronXL

**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
NuGet IronXL Installation

**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
A screenshot of a computerDescription automatically generated

**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;
$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();
}
$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. 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;
$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;
}
$vbLabelText   $csharpLabel

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:

IronXL vs. NPOI Beispiel

Sind Sie bereit, den Unterschied in Ihrem eigenen Projekt zu sehen? Starten Sie eine kostenlose 30-tägige Testversion von IronXL , um diese Beispiele lokal auszuführen.

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

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

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an