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 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.
Instancier XSSFWorkbook pour stocker le fichier Excel
Obtenir une feuille de travail spécifique avec GetSheetAt méthode
Accéder à chaque ligne en passant l'index de la ligne à GetRow méthode
Accédez à chaque cellule de la ligne avec Cellule méthode
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
NPOI
IronXL
Plages de cellules
Plages 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 calcul
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 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 :
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 - 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".
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 - 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;
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.
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Tout en poursuivant ses études, Kannapat est également devenu membre du Vehicle Robotics Laboratory, qui fait partie du Department of Bioproduction Engineering (département d'ingénierie de la bioproduction). En 2022, il a mis à profit ses compétences en C# pour rejoindre l'équipe d'ingénieurs d'Iron Software, où il se concentre sur IronPDF. Kannapat apprécie son travail car il apprend directement auprès du développeur qui écrit la majeure partie du code utilisé dans IronPDF. Outre l'apprentissage par les pairs, Kannapat apprécie l'aspect social du travail chez Iron Software. Lorsqu'il n'écrit pas de code ou de documentation, Kannapat peut généralement être trouvé en train de jouer sur sa PS5 ou de revoir The Last of Us.
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. (Aucune obligation de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre gratuit Démonstration en direct
Fiable par plus de 2 millions d'ingénieurs dans le monde entier