VERGLEICH MIT ANDEREN KOMPONENTEN

Ein Vergleich von IronXL und NPOI

Regan Pun
Regan Pun
1. Dezember 2021
Teilen Sie:

Wie Sie vielleicht wissen, ist Excel die wahrscheinlich am häufigsten verwendete Tabellenkalkulationsanwendung der Welt. Zu den Nutzern gehören sowohl Entwickler als auch die allgemeine Bevölkerung, aber es sind die Entwickler, die sich wahrscheinlich mehr für diesen Artikel interessieren werden. Ursprünglich 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), das in die Office Suite integriert war und mit dem Sie jedes Office-Produkt nach Ihren Bedürfnissen manipulieren konnten.

Entwickler verwendeten VBA in Excel, um ihre Interaktionen mit Excel und seinen Daten, sogar seine visuellen Fähigkeiten, anzupassen. Aber irgendwann war das nicht mehr genug. Die Entwickler wollten mehr, und so begannen sie mit Office.Interop.

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

  • IronXL
  • NPOI

    Sie werden sehen und lernen, was die einzelnen Excel-Bibliotheken können, und dann die beiden anhand von Codebeispielen und Schritt-für-Schritt-Tutorials vergleichen. In diesem Artikel können zwar nicht alle Funktionen beider Excel-Bibliotheken behandelt werden, aber es werden die gängigsten und beliebtesten Verwendungszwecke der beiden Bibliotheken erläutert.

Was ist NPOI?

NPOI ist die .NET-Version des POI Java-Projekts auf [http://poi.apache.org/](http://poi.apache.org/" target="_blank" rel="nofollow). POI ist ein Open-Source-Projekt, mit dem Sie xls-, doc- und ppt-Dateien lesen und schreiben können. Es hat eine breite Palette von Anwendungen.

Sie können es zum Beispiel verwenden, um:

  • Generieren Sie einen Excel-Bericht, ohne dass die Microsoft Office Suite auf Ihrem Server installiert sein muss, und effizienter als der Aufruf von Microsoft Excel ActiveX im Hintergrund
  • Extrahieren Sie Text aus Office-Dokumenten, um Ihnen bei der Implementierung einer Volltext-Indexierungsfunktion zu helfen (diese Funktion wird meistens verwendet, um Suchmaschinen zu erstellen).
  • Bilder aus Office-Dokumenten extrahieren
  • Excel-Blätter erzeugen, die Formeln enthalten

NPOI und Excel

NPOI ist ein C#-Port des [POI Java](http://poi.apache.org/" target="_blank" rel="nofollow)-Projekts von Apache. Es ist kostenlos und quelloffen. Außerdem ist kein Interop erforderlich, d. h., die Benutzer müssen Excel nicht installiert haben, damit die Anwendung des Entwicklers damit funktioniert.

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

Zellenbereiche

Tabelle 1 - Funktionsvergleich


Installation von IronXL und NPOI

Sie können beide Bibliotheken durch manuelles Herunterladen, über NuGet oder mit dem NuGet Package Manager in Visual Studio installieren. Hier ist ein kurzer Überblick.

NPOI-Installation

Installation von NPOI mit NuGet

Um NPOI über NuGet zu installieren, öffnen Sie die Eingabeaufforderung von Visual Studio Developer und geben Sie Folgendes ein:

Grafische BenutzeroberflächeBeschreibung automatisch generiert

Abbildung 1 - NuGet NPOI Installation

Visual Studio NuGet-Paketmanager und NPOI

Führen Sie die folgenden Schritte aus, um IronXL oder NPOI über den NuGet Package Manager in Visual Studio zu installieren:

  • Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer
  • Wählen Sie NuGet-Pakete verwalten
  • Suchen Sie nach Ihrem Paket
  • Installieren klicken
    Ein Bildschirmfoto eines Computers Beschreibung automatisch generiert

    Abbildung 2 - NuGet-Paket-Manager für NPOI

IronXL-Installation

Herunterladen von IronXL

Um IronXL herunterzuladen, gehen Sie zu dem folgenden URL und klicken Sie auf die Schaltfläche "Download".

IronXL herunterladen

Abbildung 3 - IronXL herunterladen

Installation von IronXL mit NuGet

Um IronXL über NuGet zu installieren, öffnen Sie die Eingabeaufforderung von Visual Studio Developer und geben Sie Folgendes ein:

NuGet IronXL Installation

Abbildung 4 - NuGet IronXL Installation

Visual Studio NuGet-Paketmanager und IronXL

Führen Sie die folgenden Schritte aus, um IronXL über den NuGet Package Manager in Visual Studio zu installieren:

  • Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer
  • Wählen Sie NuGet-Pakete verwalten
  • Suchen Sie nach Ihrem Paket
  • Installieren klicken
    Ein Bildschirmfoto eines Computers Beschreibung automatisch generiert

    Abbildung 5 - NuGet-Paket-Manager für IronXL

Lesen von und Schreiben in eine Excel-Datei mit NPOI und IronXL

Lesen einer Excel-Datei mit NPOI

Der folgende Code zeigt, wie eine Excel-Datei gelesen und ihr Inhalt mit NPOI angezeigt werden kann. Fügen Sie den folgenden Code hinzu und schließen Sie die erforderlichen Namespaces ein:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
$vbLabelText   $csharpLabel

Der folgende Code liest eine vorhandene Excel-Datei und zeigt sie in einer Datengitteransicht an.

 public void ReadExcelNPOI()
        {
            DataTable dtTable = new DataTable();
            List<string> lstRows = new List<string>();
            ISheet objWorksheet;
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            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;

                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());
                    }
                }
                for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
                {
                    IRow objRow = objWorksheet.GetRow(i);
                    if (objRow == null) continue;
                    if (objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
                    for (int j = objRow.FirstCellNum; j < countCells; j++)
                    {
                        if (objRow.GetCell(j) != null)
                        {
                            if (!string.IsNullOrEmpty(objRow.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(objRow.GetCell(j).ToString()))
                            {
                                lstRows.Add(objRow.GetCell(j).ToString());
                            }
                        }
                    }

                    if (lstRows.Count > 0)
                        dtTable.Rows.Add(lstRows.ToArray());
                    lstRows.Clear();
                }
            }
            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";
            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;

                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());
                    }
                }
                for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
                {
                    IRow objRow = objWorksheet.GetRow(i);
                    if (objRow == null) continue;
                    if (objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
                    for (int j = objRow.FirstCellNum; j < countCells; j++)
                    {
                        if (objRow.GetCell(j) != null)
                        {
                            if (!string.IsNullOrEmpty(objRow.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(objRow.GetCell(j).ToString()))
                            {
                                lstRows.Add(objRow.GetCell(j).ToString());
                            }
                        }
                    }

                    if (lstRows.Count > 0)
                        dtTable.Rows.Add(lstRows.ToArray());
                    lstRows.Clear();
                }
            }
            dataGridView1.DataSource = dtTable;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            ReadExcelNPOI();
        }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Lesen einer Excel-Datei mit IronXL

Der folgende Code veranschaulicht, wie eine Excel-Datei gelesen und in einer Datengitteransicht mit IronXL angezeigt werden kann. Fügen Sie den folgenden Code hinzu und schließen Sie den Namespace ein:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

Beachten Sie die Einbeziehung von IronXL. Dies ist notwendig, damit IronXL funktionieren kann. Fügen Sie die nächsten Zeilen hinzu:

        private void button2_Click(object sender, EventArgs e)
        {
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            WorkBook workbook = WorkBook.Load(strPath);
            WorkSheet sheet = workbook.DefaultWorkSheet;
            var dtTable = sheet.ToDataTable(true);
            dataGridView1.DataSource = dtTable;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            WorkBook workbook = WorkBook.Load(strPath);
            WorkSheet sheet = workbook.DefaultWorkSheet;
            var dtTable = sheet.ToDataTable(true);
            dataGridView1.DataSource = dtTable;
        }
Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
			Dim workbook As WorkBook = WorkBook.Load(strPath)
			Dim sheet As WorkSheet = workbook.DefaultWorkSheet
			Dim dtTable = sheet.ToDataTable(True)
			dataGridView1.DataSource = dtTable
End Sub
$vbLabelText   $csharpLabel

Wie Sie sehen können, bedeutet das alles eine Menge weniger Arbeit.

Schlussfolgerung

Warum also IronXL? Wie Sie sehen, verfügt IronXL über eine einfach zu verwendende API, die Ihren Code sauber hält. Bibliotheken, die IronXL verwenden, rühmen sich eines sauberen, lesbaren Codes - eine Investition, die sich auszahlt, denn sie reduziert den Zeit- und Arbeitsaufwand, der nötig ist, um den Code zu verstehen, und ermöglicht es, ihn zu ändern, ohne etwas kaputt zu machen.

IronXL ist rundum intuitiver und dabei genauso leistungsfähig wie NPOI. Und natürlich erhalten Sie mit einem Lizenzschlüssel Zugang zu den wichtigsten Vorteilen einer kostenpflichtigen Software: Sie erhalten unseren professionellen Support, konsistente und zuverlässige Update-Pläne und die Möglichkeit, Funktionen von Iron Software-Support-Mitarbeitern anzufordern, die Ihnen gerne weiterhelfen. Das ist etwas, was Open Source einfach nicht bieten kann.

Herunterladen

Dieses Projekt ist auf GitHub verfügbar: IronXL vs. NPOI Beispiel

Regan Pun
Software-Ingenieur
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
Ein Vergleich zwischen IronXL und CsvHelper
NÄCHSTES >
Ein Vergleich zwischen IronXL und Aspose Cells