Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
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
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.
GetSheetAt
méthodeGetRow
méthodeCellule
méthodeNPOI 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 :
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 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.
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 |
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.
Pour installer NPOI via NuGet, ouvrez l'invite de commande de Visual Studio developer et entrez ce qui suit :
Suivez les étapes suivantes pour installer IronXL ou NPOI via le gestionnaire de paquets NuGet dans Visual Studio :
Pour télécharger IronXL, rendez-vous à l'adresse suivante URL et cliquez sur le bouton "Télécharger".
Pour installer IronXL via NuGet, ouvrez l'invite de commande de Visual Studio developer et entrez ce qui suit :
Suivez les étapes suivantes pour installer IronXL via le gestionnaire de paquets NuGet dans Visual Studio :
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
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
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
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
Comme vous pouvez le constater, cela se traduit par une réduction considérable de la charge de travail.
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.
Ce projet est disponible sur GitHub : Exemple IronXL vs NPOI
9 produits de l'API .NET pour vos documents de bureau