5,695,118 members and growing! (13,971 online)
Email Password   helpLost your password?
Web Development » ASP.NET » Howto     Intermediate

C# - Retrieve Excel Workbook Sheet Names.

By Kenny Young

This article provides a way to retrieve the worksheet names of an Excel Workbook. This can be used to query a workbook using ADO.NET if you do not know the names of the worksheets.
C#, Windows, .NET, Visual Studio, ASP.NET, Dev

Posted: 25 Aug 2004
Updated: 25 Aug 2004
Views: 119,593
Bookmarked: 60 times
Announcements
Loading...



Search    
Advanced Search
Sitemap
46 votes for this Article.
Popularity: 7.67 Rating: 4.61 out of 5
1 vote, 2.2%
1
0 votes, 0.0%
2
2 votes, 4.3%
3
5 votes, 10.9%
4
38 votes, 82.6%
5

Introduction

There are many examples using ADO.NET to query an Excel Workbook but they all have a limitation, you must know the worksheet name. This might work if you know the name of the worksheet, but what if you don't? If your program is dynamic and your sheet names differ for each Excel workbook, you need a way to extract the names of the sheets. The code example provides you with a way to retrieve the work sheet names.

The following method returns a string array containing the names of the sheets. The method also shows how to loop through the array. The method has one input parameter excelFile which is the location of the Excel file.

Code Example

/// <summary>

/// This mehtod retrieves the excel sheet names from 

/// an excel workbook.

/// </summary>

/// <param name="excelFile">The excel file.</param>

/// <returns>String[]</returns>

private String[] GetExcelSheetNames(string excelFile)
{
  OleDbConnection objConn = null;
  System.Data.DataTable dt = null;

  try
  {
    // Connection String. Change the excel file to the file you

    // will search.

    String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
    // Create connection object by using the preceding connection string.

    objConn = new OleDbConnection(connString);
    // Open connection with the database.

    objConn.Open();
    // Get the data table containg the schema guid.

    dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
 
    if(dt == null)
    {
      return null;
    }

    String[] excelSheets = new String[dt.Rows.Count];
    int i = 0;

    // Add the sheet name to the string array.

    foreach(DataRow row in dt.Rows)
    {
      excelSheets[i] = row["TABLE_NAME"].ToString();
      i++;
    }

    // Loop through all of the sheets if you want too...

    for(int j=0; j < excelSheets.Length; j++)
    {
      // Query each excel sheet.

    }

    return excelSheets;
  }
  catch(Exception ex)
  {
    return null;
  }
  finally
  {
    // Clean up.

    if(objConn != null)
    {
      objConn.Close();
      objConn.Dispose();
    }
    if(dt != null)
    {
      dt.Dispose();
    }
  }
}

Enjoy...

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Kenny Young


B.S. - University of South Florida.

Ken currently works as a software architect at the Pediatrics Epidemiology Center at the University of South Florida. He is involved in the architecture and design on numerous clinical trial projects at the center. Some of the project include:

1. Rare Diseases Clinical Research Network
2. Florida Neurofibromatosis
3. Cystic Fibrosis
4. AIDA
5. TrialNet
Occupation: Architect
Location: United States United States

Other popular ASP.NET articles:

Article Top
Sign Up to vote for this article
You must Sign In to use this message board.
FAQ FAQ Noise ToleranceSearch Search Messages 
 Layout  Per page   
 Msgs 1 to 22 of 22 (Total in Forum: 22) (Refresh)FirstPrevNext
GeneralOrder of Tabsmembersdb774:52 7 Oct '08  
GeneralHow to get the real names? Without $ or 'memberfanndibong19:39 6 Apr '08  
GeneralGood articlememberjunique9:48 4 Mar '08  
Generalaccess to excelmemberhamedeng8:37 7 Sep '07  
GeneralC# - Inserting Rows in Excel WorkSheetmemberXBenedict23:04 12 Jul '07  
GeneralRe: C# - Inserting Rows in Excel WorkSheetmemberprivacy space23:35 23 Aug '07  
GeneralPassword ProtectedmemberRedDogEdward2:51 5 Dec '06  
GeneralDoesn't seem to work with Excel 5.0 files.membertolsen6413:37 9 Feb '06  
GeneralAdd WorksheetmemberBikash Rai21:25 7 Oct '05  
GeneralGetting retriving excel sheetsmembergodfathers23:09 2 Mar '05  
GeneralRe: Getting retriving excel sheetsmemberabhi kumar21:05 16 Aug '05  
GeneralA Better Way???sussAnonymous13:32 30 Oct '04  
GeneralRe: A Better Way???memberMike Ellison14:59 30 Oct '04  
GeneralExcel SheetssussAnonymous10:23 15 Sep '04  
GeneralGood Workmemberterence wallace18:45 30 Aug '04  
Generalgood tipmemberAshley van Gerven17:31 26 Aug '04  
GeneralRe: good tipmemberLabrat00221:17 26 Aug '04  
GeneralRe: good tipmemberAshley van Gerven4:18 30 Aug '04  
GeneralHidden Sheets?memberMike Ellison8:12 26 Aug '04  
GeneralRe: Hidden Sheets?memberKen G Young10:47 30 Aug '04  
QuestionRe: Hidden Sheets?memberankitbansal822:16 30 Oct '06  
AnswerRe: Hidden Sheets?memberSuperDuckZA_PS3:26 27 Jul '07  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 25 Aug 2004
Editor: Smitha Vijayan
Copyright 2004 by Kenny Young
Everything else Copyright © CodeProject, 1999-2008
Web09 | Advertise on the Code Project