using IronXL;
using System;
using System.Linq;
// Supported for XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];
// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select a cell and return the converted value
int cellValue = workSheet["A2"].IntValue;
// Read from ranges of cells elegantly.
foreach (var cell in workSheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Calculate aggregate values such as Min, Max and Sum
decimal sum = workSheet["A2:A10"].Sum();
// Linq compatible
decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue);
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 y avait des VBA (Visual Basic for Applications) intégrés dans la suite Office avec lesquels vous pouviez manipuler n'importe quel produit Office selon 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.
Instancier un objet XSSFWorkbook pour stocker le fichier Excel
Obtenez 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 le NPOI ?
NPOI est la version .NET du projet POI Java à l'adresse [http://poi.apache.org/](http://poi.apache.org/" target="_blank" rel="nofollow). 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
Extrait du texte des documents Office pour vous aider à mettre en œuvre une fonctionnalité d'indexation en texte intégral (la plupart du temps, cette fonctionnalité 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
NPOI est un portage en C# du projet [POI Java](http://poi.apache.org/" target="_blank" rel="nofollow) 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
Plages de cellules
Tableau 1 - Comparaison des fonctionnalités
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 :
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
Figure 2 - Gestionnaire de packages NuGet pour NPOI
Installation d'IronXL
Téléchargement d'IronXL
Pour télécharger IronXL, accédez à l'URL suivante et cliquez sur le bouton "Download".
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 :
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
Figure 5 - Gestionnaire de packages NuGet 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;
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
$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. Ajoutez le code suivant et incluez l'espace de noms :
using IronXL;
using IronXL;
Imports IronXL
$vbLabelText $csharpLabel
Remarquez l'inclusion d'IronXL. Ceci est nécessaire pour que IronXL fonctionne. Ajouter les lignes suivantes :
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
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.
Regan est diplômé de l'université de Reading, où il a obtenu une licence en ingénierie électronique. Avant de rejoindre Iron Software, il s'était concentré sur une seule tâche. Ce qu'il apprécie le plus chez Iron Software, c'est la diversité des tâches qu'il peut accomplir, qu'il s'agisse d'apporter une valeur ajoutée aux ventes, à l'assistance technique, au développement de produits ou à la commercialisation. Il aime comprendre comment les développeurs utilisent la bibliothèque d'Iron Software et utiliser ces connaissances pour améliorer continuellement la documentation et développer les produits.
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier