Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS
Une comparaison entre NPOI et IronXL

Une comparaison entre IronXL et NPOI

IronXL et NPOI sont deux bibliothèques Excel .NET qui fonctionnent sans Office.Interop — aucune installation de Microsoft Excel n'est requise. Cette comparaison porte sur leurs API de lecture, d'écriture et de manipulation de fichiers Excel, avec des exemples de code pour les opérations les plus fréquemment rencontrées par les développeurs.

Qu'est-ce que NPOI ?

NPOI is the .NET version of the POI Java project at http://poi.apache.org/. POI est un projet open-source qui peut vous aider à lire/écrire des fichiers xls, doc et ppt. Il possède un large éventail d'applications.

Par exemple, vous pouvez l'utiliser pour :

Générez un rapport Excel sans installer la suite Microsoft Office sur votre serveur ; cette méthode est plus efficace que l'exécution d'un contrôle ActiveX Microsoft Excel en arrière-plan.

  • Extraire du texte à partir de documents Office pour vous aider à implémenter une fonction d'indexation plein texte (cette fonction est généralement utilisée pour créer des moteurs de recherche).
  • Extraire des images à partir de documents Office
  • Générer des feuilles Excel contenant des formules

NPOI et Excel

NPOI is a C# port of the POI Java project by Apache. Il est gratuit et open source. De plus, elle ne nécessite pas d'interopérabilité, ce qui signifie que les utilisateurs n'auront pas besoin d'avoir Excel installé pour que l'application du développeur fonctionne avec celui-ci.

IronXL et Excel

IronXL est une API Excel pour VB et C#. Avec IronXL, vous pouvez lire, modifier et créer des fichiers de tableur Excel en .NET.

Comment NPOI et IronXL se comparent-ils ?

NPOI IronXL
Plages de cellules Plages de cellules
Mise en forme des cellules (bordure, couleur, remplissage, police, nombre, alignement) Styles visuels des cellules : police, taille, motif d'arrière-plan, bordure, alignement et formats numériques.
Calcul de formule Formules
Validation des Données Validation des Données
mise en forme conditionnelle mise en forme conditionnelle
Images Images
Graphiques Graphiques

**Tableau 1** - Comparaison des fonctionnalités

Les équipes qui évaluent IronXL comme alternative à NPOI peuvent tester l'API complète grâce à un essai gratuit de 30 jours .


Installation d'IronXL et de NPOI

Vous pouvez installer les deux bibliothèques en les téléchargeant manuellement, via NuGet ou avec le gestionnaire de packages NuGet dans Visual Studio. Voici un bref aperçu ; Pour une présentation détaillée étape par étape, consultez le guide de démarrage IronXL .

Installation NPOI

Installation de NPOI avec NuGet

Pour installer NPOI via NuGet, ouvrez l'invite de commandes développeur de Visual Studio et saisissez la commande suivante :

Install-Package NPOI -Version x.x.x
Graphical user interfaceDescription automatically generated

**Figure 1** - Installation de NuGet NPOI

Gestionnaire de packages NuGet et NPOI pour Visual Studio

Utilisez les étapes suivantes pour installer IronXL ou NPOI via le gestionnaire de packages NuGet dans Visual Studio :

  • Cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions
  • Sélectionnez Gérer les packages NuGet
  • Recherchez votre forfait Cliquez sur Installer
A screenshot of a computerDescription automatically generated

**Figure 2** - Gestionnaire de packages NuGet pour NPOI

Installation d'IronXL

Téléchargement d'IronXL

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

Download IronXL

**Figure 3** - Télécharger IronXL

Installation d'IronXL avec NuGet

Pour installer IronXL via NuGet, ouvrez l'invite de commandes développeur de Visual Studio et saisissez la commande suivante :

Install-Package IronXl.Excel -Version x.x.x
NuGet IronXL Installation

**Figure 4** - Installation de NuGet IronXL

Gestionnaire de packages NuGet pour Visual Studio et IronXL

Suivez les étapes ci-dessous pour installer IronXL via le gestionnaire de packages NuGet dans Visual Studio :

  • Cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions
  • Sélectionnez Gérer les packages NuGet
  • Recherchez votre forfait Cliquez sur Installer
A screenshot of a computerDescription automatically generated

**Figure 5** - Gestionnaire de packages NuGet pour IronXL

Lecture et écriture dans un fichier Excel avec NPOI et IronXL

Lecture d'un fichier Excel avec NPOI

Le code suivant montre comment lire un fichier Excel et afficher son contenu avec NPOI. Ajoutez le code suivant et incluez les espaces de noms nécessaires :

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

Le code ci-dessous lit un fichier Excel existant et l'affiche dans une grille de données.

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

Lecture d'un fichier Excel avec IronXL

Le code suivant montre comment lire un fichier Excel et l'afficher dans une grille de données avec IronXL. Pour plus d'exemples de code IronXL , consultez la documentation. Ajoutez le code suivant et incluez l'espace de noms :

using IronXL;
using System.Data;
using IronXL;
using System.Data;
$vbLabelText   $csharpLabel

Notez la présence d'IronXL. Ceci est nécessaire au fonctionnement d'IronXL. Ajoutez les lignes suivantes :

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

Comme vous pouvez le constater, IronXL réduit l'opération de lecture et d'affichage à environ 5 lignes de code contre plus de 40 pour NPOI, éliminant ainsi complètement l'itération manuelle des lignes et la boucle d'extraction cellule par cellule. Consultez l'ensemble des guides des fonctionnalités IronXL pour découvrir des méthodes plus efficaces pour les tâches Excel courantes.

Quelle bibliothèque devriez-vous choisir ?

NPOI offre une base open source solide et bien établie pour la manipulation d'Excel dans .NET — son héritage en tant que portage d'Apache POI signifie qu'il bénéficie d'années de contributions de la communauté et d'une large couverture de formats. Pour les équipes dont le principal besoin est de lire et d'écrire des feuilles de calcul dans un logiciel gratuit et communautaire, NPOI est un choix fiable.

Là où les équipes rencontrent souvent des difficultés, c'est au niveau de la quantité de code standard que NPOI exige pour les opérations courantes. Comme l'illustre l'exemple de lecture de fichier ci-dessus, l'approche d'IronXL nécessite environ 5 lignes de code contre plus de 40 pour NPOI pour la même opération (charger un classeur et l'afficher dans une grille de données), éliminant ainsi complètement la boucle d'itération manuelle des lignes et des cellules. Cette réduction de la surface du code est un investissement rentable grâce à une maintenance simplifiée et à moins d'endroits où les bogues peuvent se cacher.

IronXL inclut également une assistance Professional , des mises à jour régulières et la possibilité de demander des fonctionnalités directement aux ingénieurs Iron Software . Les projets menés par la communauté présentent différents compromis à cet égard : une contribution plus large des intervenants, mais des délais de réponse moins prévisibles pour des problèmes spécifiques.

Au-delà du coût de la licence, le coût total du projet comprend les heures de développement consacrées à l'écriture et à la maintenance du code supplémentaire requis par l'API de bas niveau de NPOI, ainsi qu'au débogage de la logique de mappage de données manuelle illustrée dans les exemples ci-dessus. Pour les équipes évaluant les coûts sur un cycle de vie de projet pluriannuel, ces coûts de développement et de maintenance éclipsent fréquemment la différence entre les licences open source et commerciales.

Téléchargements

Ce projet est disponible sur GitHub :

Exemple IronXL vs NPOI

Prêt à constater la différence dans votre propre projet ? Démarrez un essai gratuit de 30 jours IronXL pour exécuter ces exemples en local.

Veuillez noterNPOI est une marque déposée de son propriétaire respectif. Ce site n'est ni affilié à, ni approuvé par, ni parrainé par NPOI. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.

Questions Fréquemment Posées

Quelle est une alternative à l'utilisation d'Office.Interop pour la manipulation d'Excel en C# ?

IronXL est une alternative à l'utilisation d'Office.Interop pour la manipulation d'Excel en C#. Il offre une API conviviale qui permet aux développeurs de créer, lire et modifier des fichiers Excel sans avoir besoin d'installer Microsoft Office.

Comment puis-je convertir des fichiers Excel en PDF en C# ?

Vous pouvez utiliser IronXL pour convertir des fichiers Excel en PDF en C# en chargeant le carnet Excel avec WorkBook.Load puis en utilisant la méthode WorkBook.SaveAs pour enregistrer le fichier au format PDF.

Quels sont les principaux avantages d'utiliser IronXL pour la manipulation de fichiers Excel ?

IronXL offre une API plus intuitive pour un entretien plus facile du code, un support professionnel, des mises à jour régulières et la capacité de gérer des fichiers Excel sans Microsoft Office installé, ce qui en fait un choix solide pour les développeurs.

IronXL peut-il être installé via NuGet ?

Oui, IronXL peut être installé via NuGet. Ouvrez l'invite de commande du développeur Visual Studio et saisissez Install-Package IronXL.Excel -Version x.x.x.

Quelles sont les tâches courantes liées à Excel qui peuvent être effectuées avec IronXL ?

Avec IronXL, les développeurs peuvent effectuer des tâches telles que la lecture et l'écriture de fichiers Excel, le stylisme des cellules, l'utilisation de formules, la validation des données, l'application de formatages conditionnels, et le travail avec des images et des graphiques.

Comment lire un fichier Excel en C# sans Microsoft Office ?

Avec IronXL, vous pouvez lire un fichier Excel en C# en chargeant le carnet à l'aide de WorkBook.Load, en accédant à la feuille de calcul et en parcourant les lignes et les cellules en utilisant des méthodes simples.

Pourquoi choisir IronXL par rapport aux alternatives open-source pour la manipulation d'Excel ?

IronXL offre une API plus conviviale, un support professionnel, des mises à jour régulières et des demandes de fonctionnalités continues, ce qui constitue des avantages par rapport aux alternatives open-source comme NPOI.

En quoi NPOI diffère-t-il d'IronXL pour la manipulation de fichiers Excel ?

NPOI est une bibliothèque open-source basée sur le projet Apache POI pour gérer les fichiers Excel sans Microsoft Office. IronXL, cependant, offre une API plus intuitive, un support professionnel, et des mises à jour régulières, le rendant adapté aux applications commerciales.

Quel est le processus pour convertir une feuille de calcul Excel en DataTable en utilisant IronXL ?

Pour convertir une feuille de calcul Excel en DataTable en utilisant IronXL, chargez le classeur avec WorkBook.Load, accédez à la feuille de calcul désirée et utilisez la méthode disponible pour la convertir en DataTable pour une utilisation ultérieure.

Comment IronXL peut-il améliorer la gestion des fichiers Excel dans les applications .NET ?

IronXL améliore la gestion des fichiers Excel dans les applications .NET en offrant une API propre et intuitive, facilitant des tâches comme la lecture, la modification, et la création de fichiers Excel facilement, sans dépendre des installations de Microsoft Office.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi