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

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 ouinstaller 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
VB   C#

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 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)
VB   C#

Vous pouvez en savoir plus sur la façon de travailler avecExcel 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
VB   C#

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 commentCré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
VB   C#

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"
VB   C#

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 duFonction 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")
VB   C#
  • 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")
VB   C#
  • 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")
VB   C#
  • 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")
VB   C#

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
VB   C#

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 deModifier 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
VB   C#

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