COMPARAISON AVEC D'AUTRES COMPOSANTS

Comparaison d'IronXL et du NPOI

Publié décembre 1, 2021
Partager:

Comme vous le savez peut-être, Excel est probablement le tableur le plus utilisé au monde. Les utilisateurs comprennent à la fois les développeurs et la population en général, mais ce sont les développeurs qui seront probablement les plus intéressés par cet article. Au départ, les développeurs n'avaient pas beaucoup d'options pour travailler avec Excel dans leurs différentes applications. Cependant, il existait des logiciels VBA(Visual Basic pour les applications) intégré dans la suite Office, avec lequel vous pouvez manipuler n'importe quel produit Office en fonction de vos besoins.

Les développeurs ont utilisé VBA dans Excel pour personnaliser leurs interactions avec Excel et ses données, et même ses capacités visuelles. Mais finalement, cela n'a pas suffi. Les développeurs en voulaient plus et ont commencé à utiliser Office.Interop.

Dans cet article, je vais comparer deux très bonnes bibliothèques Excel qui ne dépendent pas d'Office.Interop pour travailler avec Excel. Il s'agit de

  • IronXL
  • NPOI

    Vous verrez et apprendrez ce que chaque bibliothèque Excel peut faire, puis vous comparerez les deux à l'aide d'exemples de code et de tutoriels étape par étape. Bien que cet article ne puisse pas couvrir toutes les fonctionnalités des deux bibliothèques Excel, il expliquera les utilisations les plus courantes et les plus populaires de chacune d'entre elles.

Qu'est-ce que le NPOI ?

NPOI est la version .NET du projet POI Java à l'adresse suivante http://poi.apache.org/. POI est un projet open-source qui peut vous aider à lire/écrire des fichiers xls, doc, ppt. Il a un large éventail d'applications.

Par exemple, vous pouvez l'utiliser pour :

  • Générer un rapport Excel sans que la suite Microsoft Office soit installée sur votre serveur et plus efficacement qu'en appelant Microsoft Excel ActiveX en arrière-plan
  • Extraire le texte des documents Office pour vous aider à mettre en place une fonction d'indexation plein texte(la plupart du temps, cette fonction est utilisée pour créer des moteurs de recherche)
  • Extraire des images de documents Office
  • Générer des feuilles Excel contenant des formules

Le NPOI et Excel

Le NPOI est un portage en C# de l'application POI Java par Apache. Il est gratuit et open-source. En outre, il ne nécessite pas d'interopérabilité, ce qui signifie que les utilisateurs n'auront pas besoin d'installer Excel pour que l'application du développeur fonctionne avec lui.

IronXL et Excel

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

Caractéristiques communes aux bibliothèques Excel du NPOI et d'IronXL

NPOIIronXL
Plages de cellulesPlages de cellules
Style des cellules (Bordure, Couleur, Remplissage, Police, Nombre, Alignements)Styles visuels des cellules Police, taille, motif d'arrière-plan, bordure, alignement et formats des nombres.
Formule de calculFormules
Validation des donnéesValidation des données
Mise en forme conditionnelleMise en forme conditionnelle
ImagesImages
GraphiquesGraphiques

Tableau 1 - Comparaison des caractéristiques


Installation d'IronXL et du NPOI

Vous pouvez installer les deux bibliothèques en les téléchargeant manuellement, via NuGet ou avec le gestionnaire de paquets NuGet dans Visual Studio. En voici un bref aperçu.

Installation du NPOI

Installer NPOI avec NuGet

Pour installer NPOI via NuGet, ouvrez l'invite de commande de Visual Studio developer et entrez ce qui suit :

Interface utilisateur graphiqueDescription générée automatiquement

Figure 1 - Installation de NuGet NPOI

Visual Studio NuGet Package Manager et NPOI

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

  • Cliquez avec le bouton droit de la souris sur le projet dans l'explorateur de solutions
  • Sélectionnez Gérer les paquets NuGet
  • Recherchez votre paquet
  • Cliquez sur Installer
    Capture d'écran d'un ordinateurDescription générée automatiquement

    Figure 2 - NuGet Package Manager pour NPOI

Installation d'IronXL

Téléchargement d'IronXL

Pour télécharger IronXL, rendez-vous à l'adresse suivante URL et cliquez sur le bouton "Télécharger".

Télécharger IronXL

Figure 3 - Télécharger IronXL

Installer IronXL avec NuGet

Pour installer IronXL via NuGet, ouvrez l'invite de commande de Visual Studio developer et entrez ce qui suit :

Installation de NuGet IronXL

Figure 4 - Installation de NuGet IronXL

Visual Studio NuGet Package Manager et IronXL

Suivez les étapes suivantes pour installer IronXL via le gestionnaire de paquets NuGet dans Visual Studio :

  • Cliquez avec le bouton droit de la souris sur le projet dans l'explorateur de solutions
  • Sélectionnez Gérer les paquets NuGet
  • Recherchez votre paquet
  • Cliquez sur Installer
    Capture d'écran d'un ordinateurDescription générée automatiquement

    Figure 5 - NuGet Package Manager pour IronXL

Lire et écrire dans un fichier Excel avec NPOI et IronXL

Lire un fichier Excel avec le 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 NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
VB   C#

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";
            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#

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. Ajoutez le code suivant et incluez l'espace de noms :

using IronXL;
using IronXL;
Imports IronXL
VB   C#

Remarquez l'inclusion d'IronXL. Ceci est nécessaire pour que IronXL fonctionne. Ajouter les lignes suivantes :

        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#

Comme vous pouvez le constater, cela se traduit par une réduction considérable de la charge de travail.

Conclusion

Alors pourquoi IronXL ? Comme vous le voyez, IronXL dispose d'une API facile à utiliser, qui permet de conserver un code propre. Les bibliothèques qui utilisent IronXL se targuent d'avoir un code propre et lisible est un investissement qui porte ses fruits en réduisant le temps et les efforts nécessaires pour comprendre ce que le code permet de modifier sans casser les choses.

IronXL est plus intuitif dans l'ensemble tout en étant aussi puissant que NPOI. Et, bien sûr, avec une clé de licence, vous avez accès à l'avantage le plus important d'un logiciel payant : vous bénéficiez de notre assistance professionnelle, de calendriers de mise à jour cohérents et fiables, et de la possibilité de demander des fonctionnalités aux agents d'assistance d'Iron Software, qui sont heureux de vous aider. C'est quelque chose que les logiciels libres ne peuvent pas offrir.

Téléchargements

Ce projet est disponible sur GitHub : Exemple IronXL vs NPOI

< PRÉCÉDENT
Comparaison entre IronXL et CsvHelper
SUIVANT >
Une comparaison des cellules IronXL et Aspose