Ouvrir et lire un fichier Excel à partir d’une application C# WPF

Petit tutoriel qui permet d’ouvrir et de lire les valeurs d’un fichier Excel à partir d’une application C# WPF. Cette manipulation vous donnera la possibilité d’afficher ces données à l’écran, de les insérer dans une base de données, etc…

Ajout d’une référence, quelques lignes de code et le tour est joué.

Etape 1 : Ajout de la référence au projet

Pour commencer, il faut ajouter la référence Excel à votre projet C#.

  • Faites un clic droit sur votre projet
  • Cliquez sur “Ajouter une référence…”
  • Sélectionnez l’onglet “COM”
  • Cherchez “Microsoft Excel XX.X Object Library” (voir ci-dessous)

excel_object_library

Vous devriez voir apparaître la référence (dans le volet de droite), une référence appelée “Microsoft.Office.Interop.Excel” :

interop_excel

Etape 2 : Ajout de la référence dans le code

A ajouter dans la partie “directive” du code de votre form ou classe (tout en haut) :

using Excel = Microsoft.Office.Interop.Excel;

Etape 3 : Ajout des méthodes d’ouverture/lecture

Pour ouvrir l’explorateur de fichiers windows, sélectionner un fichier, l’ouvrir et lire les données qu’il contient, il faut ajouter les deux méthodes ci-dessous :

private void OuvertureLectureXLS()
{
  Excel.Application xlApp;
  Excel.Workbook xlWorkBook;
  Excel.Worksheet xlWorkSheet;
  Excel.Range range;

  string str;
  int rCnt = 0;
  int cCnt = 0;
  OpenFileDialog OpenFileDialog1 = new OpenFileDialog();
  OpenFileDialog1.Filter = "Excel files (*.xls*)|*.xls*;";
  OpenFileDialog1.ShowDialog();
  if (OpenFileDialog1.FileName != String.Empty)
  {
     xlApp = new Excel.Application();
     xlWorkBook = xlApp.Workbooks.Open(OpenFileDialog1.FileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
     range = xlWorkSheet.UsedRange;
     cCnt = 1;
        for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
        {
           for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
           {
              str = Convert.ToString((range.Cells[rCnt, cCnt] as Excel.Range).Value2);
              MessageBox.Show(str);
           }
        }
      xlWorkBook.Close(true, null, null);
      xlApp.Quit();
      releaseObject(xlWorkSheet);
      releaseObject(xlWorkBook);
      releaseObject(xlApp);
  }
}

private void releaseObject(object obj)
{
  try
  {
     System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
     obj = null;
  }
  catch (Exception ex)
  {
     obj = null;
     MessageBox.Show("Unable to release the Object " + ex.ToString());
  }
  finally
  {
     GC.Collect();
  }
}

Maintenant il ne vous reste plus qu’à appeler la méthode “OuvertureLectureXLS()” à partir du clic d’un bouton ou autre…