
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.
Comment utiliser NPOI pour Excel en C#
- Installez la bibliothèque C# pour lire les fichiers Excel avec NPOI.
- Instancier l'objet XSSFWorkbook pour stocker le fichier Excel
- Récupérez une feuille de calcul spécifique avec la méthode
GetSheetAt - Accédez à chaque ligne en passant l'index de la ligne à la méthode
GetRow - Accédez à chaque cellule de la ligne avec la méthode
GetCell
Qu'est-ce que NPOI ?
NPOI est la version .NET du projet Java POI disponible à l' adresse 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érer un rapport Excel sans que la suite Microsoft Office ne soit installée sur votre serveur et plus efficacement que d'appeler Microsoft Excel ActiveX 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 est un portage en C# du projet Java POI d'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 au NPOI peuvent tester l'API complète avec 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 :

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

Figure 2 - Gestionnaire de packages NuGet pour NPOI
Installation d'IronXL
Téléchargement d'IronXL
Pour télécharger IronXL, rendez-vous à l' adresse URL suivante et cliquez sur le bouton " Télécharger ".

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 :

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

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;Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
Imports System.Data
Imports System.IO
Imports System.Collections.GenericLe 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 Sub ReadExcelNPOI()
Dim dtTable As New DataTable()
Dim lstRows As New List(Of String)()
Dim objWorksheet As ISheet
Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
' Use FileStream to open the Excel file
Using fStream = New FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
fStream.Position = 0
Dim objWorkbook As New XSSFWorkbook(fStream)
objWorksheet = objWorkbook.GetSheetAt(0)
Dim objHeader As IRow = objWorksheet.GetRow(0)
Dim countCells As Integer = objHeader.LastCellNum
' Add columns to the DataTable based on the header row of Excel
For j As Integer = 0 To countCells - 1
Dim objCell As ICell = objHeader.GetCell(j)
If objCell Is Nothing OrElse String.IsNullOrWhiteSpace(DirectCast(objCell, Object).ToString()) Then
Continue For
End If
If True Then
dtTable.Columns.Add(DirectCast(objCell, Object).ToString())
End If
Next j
' Add rows to the DataTable, looping through each row and cell
For i As Integer = (objWorksheet.FirstRowNum + 1) To objWorksheet.LastRowNum
Dim objRow As IRow = objWorksheet.GetRow(i)
If objRow Is Nothing OrElse objRow.Cells.All(Function(d) d.CellType = CellType.Blank) Then
Continue For
End If
For j As Integer = objRow.FirstCellNum To countCells - 1
Dim cell As ICell = objRow.GetCell(j)
If cell IsNot Nothing AndAlso Not String.IsNullOrEmpty(DirectCast(cell, Object).ToString()) AndAlso Not String.IsNullOrWhiteSpace(DirectCast(cell, Object).ToString()) Then
lstRows.Add(DirectCast(cell, Object).ToString())
End If
Next j
If lstRows.Count > 0 Then
dtTable.Rows.Add(lstRows.ToArray())
End If
lstRows.Clear()
Next i
End Using
' Assuming dataGridView1 is a DataGridView control on a Form
dataGridView1.DataSource = dtTable
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
ReadExcelNPOI()
End SubLecture 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;Imports IronXL
Imports System.DataNotez 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 Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs)
' Load the Excel workbook
Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
Dim workbook As WorkBook = WorkBook.Load(strPath)
' Access the default worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert the worksheet to a DataTable
Dim dtTable = sheet.ToDataTable(True)
' Assuming dataGridView1 is a DataGridView control on a Form
dataGridView1.DataSource = dtTable
End SubComme 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 NPOIPrêt à constater la différence dans votre propre projet ? Démarrez une période d'essai gratuite de 30 jours d'IronXL pour exécuter ces exemples localement.

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.
Articles connexes



