Données C# et Excel : un guide pratique
Cet article détaille les méthodes efficaces pour lire et manipuler des données Excel à l'aide de C#. L'exemple fourni illustre l'ouverture d'un fichier Excel, la copie de son contenu et la recherche d'adresses e-mail. Cependant, pour accéder et traiter directement les valeurs des cellules, il faut comprendre la structure de données unique d'Excel.
Structure des données d'Excel : plages nommées
Contrairement aux tableaux classiques, Excel utilise des plages nommées pour stocker les données. Pour accéder à une cellule spécifique, vous devez faire référence à son nom de plage (par exemple, « A1 » pour la cellule en haut à gauche).
Exploiter l'Range
Objet
L'objet C# Excel.Range
représente une cellule ou un groupe de cellules dans une feuille de calcul Excel. La méthode get_Range
de l'objet Excel.Worksheet
récupère un objet Range
spécifique. Par exemple :
<code class="language-csharp">Excel.Range range = worksheet.get_Range("A1", Missing.Value);</code>
Accès aux valeurs des cellules : Text
contre Value2
La propriété Text
renvoie le texte visible par l'utilisateur, tandis que Value2
fournit la valeur sous-jacente (sans formatage ni arrondi) :
<code class="language-csharp">string userVisibleText = range.Text; string rawValue = range.Value2;</code>
Itération à travers les plages de cellules
La boucle foreach
parcourt efficacement une plage de cellules :
<code class="language-csharp">foreach (Excel.Range cell in range1) { string text = cell.Text; string value = cell.Value2; }</code>
Gestion des ressources : bon nettoyage
Pour une gestion efficace des ressources, publiez les objets Excel dans l'ordre inverse de leur création. Puisque Excel.Application
et Excel.Workbook
n'implémentent pas IDisposable
, utilisez une fonction de version personnalisée (comme ReleaseRCM
dans l'exemple) :
<code class="language-csharp">if (wkb != null) ExcelTools.OfficeUtil.ReleaseRCM(wkb); if (excel != null) ExcelTools.OfficeUtil.ReleaseRCM(excel);</code>
Exemple de code complet
Ce code C# montre l'accès et l'affichage de la valeur de la cellule A1 :
<code class="language-csharp">using System; using ExcelTools = Ms.Office; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelDemo { class Program { static void Main(string[] args) { string filePath = @"C:\Users\Chris\Desktop\TestSheet.xls"; Console.WriteLine(filePath); Excel.Application excelApp = null; Excel.Workbook workbook = null; try { excelApp = new Excel.Application(); workbook = ExcelTools.OfficeUtil.OpenBook(excelApp, filePath, false, false, true); Excel.Worksheet sheet = workbook.Sheets["Data"] as Excel.Worksheet; if (sheet != null) { Excel.Range cell = sheet.get_Range("A1", Missing.Value); string a1Value = cell != null ? cell.Text.ToString() : ""; Console.WriteLine("A1 value: {0}", a1Value); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (workbook != null) ExcelTools.OfficeUtil.ReleaseRCM(workbook); if (excelApp != null) ExcelTools.OfficeUtil.ReleaseRCM(excelApp); } } } }</code>
Conclusion
Travailler avec succès avec des données Excel en C# dépend de la compréhension de la structure basée sur les plages d'Excel. L'utilisation de l'objet Excel.Range
et de ses propriétés, ainsi qu'une gestion minutieuse des ressources, permettent un accès et une manipulation efficaces et fiables des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!