Leggere dati da excel – .net C#

Una funzione veloce per leggere i dati da un file excel:

private static DataTable LoadExcel(string fileName)
{
  var dt = new DataTable();
  var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\"", fileName);

  using (var conn = new OleDbConnection(connectionString))
  {
    conn.Open();

    var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

    using (var cmd = conn.CreateCommand())
    {
      var sheetName = sheets.Rows[0]["TABLE_NAME"].ToString();

      cmd.CommandText = string.Format("SELECT * FROM [{0}] ", sheetName);
      var adapter = new OleDbDataAdapter(cmd);

      adapter.Fill(dt);
    }
  }
  return dt;
}