Not logged in - Login

Read an Excel file

The following code illustrates how to read an Excel file in C#.

This code requires that the Office.dll & Microsoft.Office.Interop.Excel.dll files be added to the 'References' in the project.

The location of these files can vary. For Visual Studio 2013, they are in the folder "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Office15\".

For the application to run, Office (Excel) must be installed on the machine.

using Excel = Microsoft.Office.Interop.Excel;

private void ReadExcel()
{
   // declare a variable to hold the name of the Excel file to read
   string sFileName = @"c:\myfile.xlsx";

   Microsoft.Office.Interop.Excel.Application xlApp = null;
   Microsoft.Office.Interop.Excel.Workbook xlWorkbook = null;
   Microsoft.Office.Interop.Excel.Worksheet xlWorksheet = null;

   try
   {
      xlApp = new Microsoft.Office.Interop.Excel.Application();
      // open the workbook
      xlWorkbook = xlApp.Workbooks.Open(sFileName);

      // get the 1st worksheet in the workbook.
      xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.get_Item(1);

      // get the range of cells used in the worksheet
      Excel.Range range = xlWorksheet.UsedRange;

      // Declare a loop to iterate thru the rows.
      // Start with 2 to skip the first row. Top row is 1.
      for (int lRowCnt = 2; lRowCnt <= range.Rows.Count; lRowCnt++)
      {
         // Iterate thru each of the columns, 1-based, not 0-based.
         for (int lColCnt = 1; lColCnt < range.Columns.Count; lColCnt++)
         {
            // get a reference to the cell.
            var cell = (range.Cells[lRowCnt, lColCnt] as Excel.Range);

            // Do something with each row/cell value.
            string sCellValue = (string)cell.Value2;
         }
      }
   }
   catch (Exception ex)
   {
      // handle any exceptions
   }
   finally
   {
      #region clean up

      if (xlWorkbook != null)
      {
         xlWorkbook.Close(false);
      }

      if (xlApp != null)
      {
         xlApp.Quit();
      }

      ReleaseObject(xlWorksheet);
      ReleaseObject(xlWorkbook);
      ReleaseObject(xlApp);

      #endregion
   }
}

public static void ReleaseObject(object obj)
{
   try
   {
      do
      {
        // nothing passed in? get out now.
        if (obj == null) break;

        System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
        obj = null;

      } while (false);
   }
   finally
   {
      GC.Collect();
   }
}