VERGLEICH MIT ANDEREN KOMPONENTEN

Ein Vergleich von IronXL und NPOI

Veröffentlicht 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. Allerdings gab es VBA(Visual Basic für Anwendungen) die in die Office-Suite integriert ist, mit der Sie jedes Office-Produkt nach Ihren Bedürfnissen bearbeiten können.

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 unter http://poi.apache.org/. 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 eine Volltextindizierungsfunktion zu implementieren(meistens wird diese Funktion verwendet, um Suchmaschinen zu erstellen)
  • Bilder aus Office-Dokumenten extrahieren
  • Excel-Blätter erzeugen, die Formeln enthalten

NPOI und Excel

NPOI ist eine C#-Portierung des POI Java projekt 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

NPOIIronXL
ZellbereicheZellbereiche
Zellengestaltung (Rahmen, Farbe, Füllung, Schriftart, Nummerierung, Ausrichtungen)Visuelle Stile für Zellen Schriftart, Größe, Hintergrundmuster, Rahmen, Ausrichtung und Zahlenformate.
Berechnung der FormelFormeln
Validierung von DatenValidierung von Daten
Bedingte FormatierungBedingte Formatierung
BilderBilder
DiagrammeDiagramme

Tabelle 1 - Vergleich der Merkmale


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 ComputersBeschreibung automatisch generiert

    Abbildung 2 - NuGet-Paketmanager für NPOI

IronXL-Installation

Herunterladen von IronXL

Um IronXL herunterzuladen, navigieren Sie zu folgendem Link URL und klicken Sie auf die Schaltfläche "Herunterladen".

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 ComputersBeschreibung automatisch generiert

    Abbildung 5 - NuGet-Paketverwaltung 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
VB   C#

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
VB   C#

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
VB   C#

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
VB   C#

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

< PREVIOUS
Ein Vergleich zwischen IronXL und CsvHelper
NÄCHSTES >
Ein Vergleich zwischen IronXL und Aspose Cells

Sind Sie bereit, loszulegen? Version: 2024.11 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 1,094,134 Lizenzen anzeigen >