C# ; contournement de l'interopérabilité d'Excel

Chaknith Bin
Chaknith Bin
juin 17, 2020
Mise à jour octobre 20, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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

  1. Installer une bibliothèque Excel pour traiter les fichiers Excel.

  2. Ouvrez le Workbook et ajoutez le fichier Excel actuel.

  3. Définir la feuille de travail par défaut.

  4. Lire la valeur du classeur Excel.

  5. 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, puis suivez pas à pas ce tutoriel sur l'utilisation d'Excel sans Interop. Des licences sont disponibles si vous souhaitez mettre votre projet en ligne.

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 permet d'accéder à la lecture d'un fichier Excel spécifique.

Après avoir accédé au WorkBook, vous pouvez ensuite choisir une WorkSheet spécifique en utilisant la fonction WorkBook.GetWorkSheet(). 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
$vbLabelText   $csharpLabel

Ce code produira le résultat suivant :

1output related to 2. Accéder aux données d'un fichier Excel

Le fichier Excel se présente comme suit :

1excel related to 2. Accéder aux données d'un fichier Excel

Nous pouvons voir que notre fichier Excel, sample.xlsx, contient small business dans la cellule A5. Les autres valeurs de B2 à B10 sont identiques et 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)
$vbLabelText   $csharpLabel

Vous pouvez en savoir plus sur la manière de travailler avec Excel DataSet et DataTables, qui 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 y parvenir, IronXL fournit la fonction WorkBook.Create(), qui crée un nouveau fichier Excel.

Nous pouvons ensuite créer autant de feuilles de calcul que nécessaire en utilisant la fonction WorkBook.CreateWorkSheet().

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
$vbLabelText   $csharpLabel

Le code ci-dessus créera un nouveau fichier Excel avec le nom NewExcelFile.xlsx, et insérera de nouvelles données aux adresses de cellule A1 et B1 avec les valeurs New Value A1 et New Value 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. Explorez plus en profondeur comment créer de nouvelles feuilles de calcul Excel avec 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
$vbLabelText   $csharpLabel

Le code ci-dessus mettra à 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"
$vbLabelText   $csharpLabel

Cela mettra à jour la ligne numéro 3 des cellules A3 à C3 avec la Nouvelle Valeur du fichier Excel.

Apprenez-en plus sur l'utilisation de la fonction Range en C# avec ces exemples.

Remplacer les valeurs des cellules

C'est la beauté d'IronXL que nous pouvons facilement remplacer les anciennes valeurs par de nouvelles valeurs dans un fichier Excel existant et cela 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")
$vbLabelText   $csharpLabel
  • 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")
$vbLabelText   $csharpLabel
  • 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")
$vbLabelText   $csharpLabel
  • 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")
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Le code ci-dessus remplacera la valeur Normal par Good de B5 à G5, et le reste de la feuille de calcul reste inchangé. En savoir plus sur la façon de modifier les valeurs de cellules Excel dans une plage et d'utiliser cette fonction de 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() 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
$vbLabelText   $csharpLabel

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
Documentation related to Tutoriel Accès rapide
Chaknith Bin
Ingénieur logiciel
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.