C# ; contournement de l'interopérabilité d'Excel
De nombreux projets utilisent Excel pour communiquer clairement, mais si vous utilisez Microsoft.Office.Interop.Excel
, vous avez probablement dû faire face à de nombreuses lignes de code compliquées. Dans ce tutoriel, nous utiliserons IronXL comme solution de contournement de l'interopérabilité avec Excel en C#, afin que vous n'ayez pas à utiliser l'interopérabilité pour terminer votre projet. Vous pouvez utiliser les données d'un fichier Excel, créer des fichiers Excel, les modifier et les manipuler, le tout en utilisant la programmation C#.
Comment utiliser alternativement Excel Interop
Installer une bibliothèque Excel pour traiter les fichiers Excel.
Ouvrez le
Workbook
et ajoutez le fichier Excel actuel.Définir la feuille de travail par défaut.
Lire la valeur du classeur Excel.
- Traiter et montrer la valeur.
Étape 1
1. Télécharger la bibliothèque IronXL
Télécharger la bibliothèque IronXL ou installer avec NuGet pour accéder à la bibliothèque gratuite et suivre pas à pas ce tutoriel sur l'utilisation d'Excel sans Interop. Des licences sont disponibles si vous souhaitez mettre en œuvre votre projet.
Install-Package IronXL.Excel
Comment faire Tutoriel
2. Accéder aux données d'un fichier Excel
Pour développer des applications commerciales, nous avons besoin d'un accès facile et parfait aux données des fichiers Excel et de la possibilité de les manipuler de manière programmatique en fonction d'une variété d'exigences. Avec IronXL, utilisez la fonction WorkBook.Load()
, qui donne accès à la lecture d'un fichier Excel spécifique.
Après avoir accédé au WorkBook, vous pouvez choisir une feuille de travail spécifique à l'aide de la fonction WorkBook.GetWorkSheet()
fonction. Vous disposez à présent de toutes les données du fichier Excel. L'exemple suivant montre comment nous avons utilisé ces fonctions pour obtenir des données de fichiers Excel dans un projet C#.
/**
Access File Data
anchor-access-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
//Access Excel file
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet of Excel file
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//get specific cell value
string a = ws ["A5"].Value.ToString();
Console.WriteLine(" Getting Single Value:\n\n Value of Cell A5: {0} ",a);
Console.WriteLine("\n Getting Many Cells Value using Loop:\n");
//get many cell values using range function
foreach (var cell in ws ["B2:B10"])
{
Console.WriteLine(" Value is: {0}", cell.Text);
}
Console.ReadKey();
}
/**
Access File Data
anchor-access-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
//Access Excel file
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet of Excel file
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//get specific cell value
string a = ws ["A5"].Value.ToString();
Console.WriteLine(" Getting Single Value:\n\n Value of Cell A5: {0} ",a);
Console.WriteLine("\n Getting Many Cells Value using Loop:\n");
//get many cell values using range function
foreach (var cell in ws ["B2:B10"])
{
Console.WriteLine(" Value is: {0}", cell.Text);
}
Console.ReadKey();
}
'''
'''Access File Data
'''anchor-access-excel-file-data
'''*
Imports Microsoft.VisualBasic
Imports IronXL
Shared Sub Main(ByVal args() As String)
'Access Excel file
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'Access WorkSheet of Excel file
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'get specific cell value
Dim a As String = ws ("A5").Value.ToString()
Console.WriteLine(" Getting Single Value:" & vbLf & vbLf & " Value of Cell A5: {0} ",a)
Console.WriteLine(vbLf & " Getting Many Cells Value using Loop:" & vbLf)
'get many cell values using range function
For Each cell In ws ("B2:B10")
Console.WriteLine(" Value is: {0}", cell.Text)
Next cell
Console.ReadKey()
End Sub
Ce code produira le résultat suivant :
Le fichier Excel se présente comme suit :
Nous pouvons voir que notre fichier Excel, sample.xlsx
, contient small business
dans la cellule A5
. Les autres valeurs de B2
à B10
sont les mêmes et sont affichées dans la sortie.
DataSet et DataTables
Nous pouvons également travailler avec des fichiers Excel en tant qu'ensemble de données, et des tableaux de données, en suivant ces instructions.
/**
DataSet and DataTables
anchor-dataset-and-datatables
**/
//Access WorkBook.
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet.
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Behave with a workbook as Dataset.
DataSet ds = wb.ToDataSet();
//Behave with workbook as DataTable
DataTable dt = ws.ToDataTable(true);
/**
DataSet and DataTables
anchor-dataset-and-datatables
**/
//Access WorkBook.
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet.
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Behave with a workbook as Dataset.
DataSet ds = wb.ToDataSet();
//Behave with workbook as DataTable
DataTable dt = ws.ToDataTable(true);
'''
'''DataSet and DataTables
'''anchor-dataset-and-datatables
'''*
'Access WorkBook.
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'Access WorkSheet.
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Behave with a workbook as Dataset.
Dim ds As DataSet = wb.ToDataSet()
'Behave with workbook as DataTable
Dim dt As DataTable = ws.ToDataTable(True)
Vous pouvez en savoir plus sur la façon de travailler avec Excel DataSet et DataTablesqui fournit davantage d'exemples de code et d'explications sur le processus.
Nous allons maintenant aborder un autre aspect, à savoir la création d'un nouveau fichier Excel dans notre projet C#.
3. Créer un nouveau fichier Excel
Nous pouvons facilement créer une nouvelle feuille de calcul Excel et y insérer des données de manière programmatique dans notre projet CSharp. Pour ce faire, IronXL fournit la fonction WorkBook.Create()
, qui crée un nouveau fichier Excel.
Nous pouvons ensuite créer autant de feuilles de travail que nécessaire à l'aide de la fonction WorkBook.CreateWorkSheet()
fonction.
Ensuite, nous pouvons également insérer des données, comme le montre l'exemple ci-dessous :
/**
Create New Excel
anchor-create-new-excel-file
**/
using IronXL;
static void Main(string [] args)
{
//create new WorkBook
WorkBook wb = WorkBook.Create();
//Create new WorkSheet in wb
WorkSheet ws = wb.CreateWorkSheet("sheet1");
//Insert Data
ws ["A1"].Value = "New Value A1";
ws ["B2"].Value = "New Value B2";
//Save newly created Excel file
wb.SaveAs("NewExcelFile.xlsx");
}
/**
Create New Excel
anchor-create-new-excel-file
**/
using IronXL;
static void Main(string [] args)
{
//create new WorkBook
WorkBook wb = WorkBook.Create();
//Create new WorkSheet in wb
WorkSheet ws = wb.CreateWorkSheet("sheet1");
//Insert Data
ws ["A1"].Value = "New Value A1";
ws ["B2"].Value = "New Value B2";
//Save newly created Excel file
wb.SaveAs("NewExcelFile.xlsx");
}
'''
'''Create New Excel
'''anchor-create-new-excel-file
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
'create new WorkBook
Dim wb As WorkBook = WorkBook.Create()
'Create new WorkSheet in wb
Dim ws As WorkSheet = wb.CreateWorkSheet("sheet1")
'Insert Data
ws ("A1").Value = "New Value A1"
ws ("B2").Value = "New Value B2"
'Save newly created Excel file
wb.SaveAs("NewExcelFile.xlsx")
End Sub
Le code ci-dessus va créer un nouveau fichier Excel avec le nom NewExcelFile.xlsx
, et insérer de nouvelles données dans les adresses des cellules A1
et B1
avec les valeurs Nouvelle valeur A1
et Nouvelle valeur B2
respectivement. Avec cette configuration, vous pouvez insérer des données de la même manière, autant que vous le souhaitez. Note : Si vous créez un nouveau fichier Excel ou si vous modifiez un fichier existant, n'oubliez pas d'enregistrer le fichier comme indiqué dans l'exemple ci-dessus. Approfondir la question de savoir comment Créer de nouvelles feuilles de calcul Excel à l'aide de C# et essayez le code dans votre projet.
4. Modifier un fichier Excel existant
Nous pouvons modifier des fichiers Excel existants et y insérer des données actualisées de manière programmatique. Dans les modifications de fichiers Excel, nous verrons les aspects suivants :
- Mise à jour de la valeur de la cellule
- Remplacer les anciennes valeurs par les nouvelles
Supprimer la ligne ou la colonne
Voyons comment mettre en œuvre les sujets ci-dessus dans notre projet CSharp.
Mise à jour de la valeur d'une cellule
Il est très simple de mettre à jour la valeur d'une cellule d'une feuille de calcul Excel existante. Il suffit d'accéder au fichier Excel dans le projet et de spécifier sa feuille de travail, puis de mettre à jour ses données comme indiqué dans l'exemple ci-dessous :
/**
Update Cell Value
anchor-update-cell-value
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//update A3 value
ws ["A3"].Value = "New Value of A3";
wb.SaveAs("sample.xlsx");
}
/**
Update Cell Value
anchor-update-cell-value
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//update A3 value
ws ["A3"].Value = "New Value of A3";
wb.SaveAs("sample.xlsx");
}
'''
'''Update Cell Value
'''anchor-update-cell-value
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'update A3 value
ws ("A3").Value = "New Value of A3"
wb.SaveAs("sample.xlsx")
End Sub
Le code ci-dessus met à jour la valeur de la cellule A3
avec Nouvelle valeur de A3
.
Nous pouvons également mettre à jour plusieurs cellules avec une valeur statique, en utilisant la fonction range :
ws ["A3:C3"].Value = "New Value";
ws ["A3:C3"].Value = "New Value";
ws ("A3:C3").Value = "New Value"
Cela mettra à jour la ligne numéro 3 des cellules A3
à C3
avec la Nouvelle valeur
du fichier Excel.
En savoir plus sur l'utilisation du Fonction Range en C# avec ces exemples.
Remplacer les valeurs des cellules
La beauté d'IronXL réside dans le fait que nous pouvons facilement remplacer les "anciennes valeurs" par de "nouvelles valeurs" dans un fichier Excel existant et qu'il couvre tous les aspects suivants :
- Remplacer les valeurs d'une feuille de travail complète :
WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value")
- Remplacer les valeurs d'une ligne spécifique :
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows (RowIndex).Replace("old value", "new value")
- Remplacer les valeurs d'une colonne spécifique :
WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
- Remplacer les valeurs d'une plage spécifique :
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ("From:To").Replace("old value", "new value")
Prenons un exemple pour voir clairement comment utiliser les fonctions ci-dessus dans notre projet CSharp pour remplacer les valeurs. Pour ce faire, nous utiliserons la fonction replace pour remplacer une valeur dans une plage spécifique.
/**
Replace Cell Value Range
anchor-replace-cell-values
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Specifying Range from B5 to G5
ws ["B5:G5"].Replace("Normal", "Good");
wb.SaveAs("sample.xlsx");
}
/**
Replace Cell Value Range
anchor-replace-cell-values
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Specifying Range from B5 to G5
ws ["B5:G5"].Replace("Normal", "Good");
wb.SaveAs("sample.xlsx");
}
'''
'''Replace Cell Value Range
'''anchor-replace-cell-values
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Specifying Range from B5 to G5
ws ("B5:G5").Replace("Normal", "Good")
wb.SaveAs("sample.xlsx")
End Sub
Le code ci-dessus remplacera la valeur Normal
par Bon
de B5
à G5
, et le reste de la feuille de calcul restera inchangé. En savoir plus sur la façon de Modifier les valeurs d'une cellule Excel dans une plage et en utilisant cette fonction d'IronXL.
Supprimer des lignes d'un fichier Excel
Dans le cadre du développement d'applications, nous avons parfois besoin de supprimer par programme des lignes entières de fichiers Excel existants. Pour cette tâche, nous utilisons la fonction RemoveRow()
fonction d'IronXL. En voici un exemple :
/**
Remove Row
anchor-remove-rows-of-excel-file
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Remove the row number 2
ws.Rows [2].RemoveRow();
wb.SaveAs("sample.xlsx");
}
/**
Remove Row
anchor-remove-rows-of-excel-file
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Remove the row number 2
ws.Rows [2].RemoveRow();
wb.SaveAs("sample.xlsx");
}
'''
'''Remove Row
'''anchor-remove-rows-of-excel-file
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Remove the row number 2
ws.Rows (2).RemoveRow()
wb.SaveAs("sample.xlsx")
End Sub
Le code ci-dessus supprimera la ligne numéro 2
de sample.xlsx
.
Tutoriel Accès rapide
Référence IronXL
Lisez la référence API pour IronXL pour en savoir plus sur toutes les fonctions, caractéristiques, classes et espaces de noms.
Référence IronXL