Click here to Skip to main content
Click here to Skip to main content

C# - Retrieve Excel Workbook Sheet Names.

, 25 Aug 2004
Rate this:
Please Sign up or sign in to vote.
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.

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

/// <span class="code-SummaryComment"><summary>
</span>
/// This mehtod retrieves the excel sheet names from 
/// an excel workbook.
/// <span class="code-SummaryComment"></summary>
</span>
/// <span class="code-SummaryComment"><param name="excelFile">The excel file.</param>
</span>
/// <span class="code-SummaryComment"><returns>String[]</returns>
</span>
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

Share

About the Author

Kenny Young

United States United States
Ken currently works as the Director of Software Engineering at the Pediatrics Epidemiology Center at the University of South Florida. He is involved in the architecture and design on numerous clinical trial projects. Some of the project include:
 
1. Rare Diseases Clinical Research Network
2. TrialNet - Diabetes
3. Teddy - Diabetes
4. CCOP - Cancer
5. AIDA - Diabetes

Comments and Discussions

 
QuestionSee also this: PinprofessionalDietmar Schoder29-Jul-14 6:22 
Questionstop sorting PinmemberMember 82406515-May-13 10:23 
Generalmy vote de 100 !!! PinmemberMember 87144215-Sep-12 10:18 
Question_xlnm#_FilterDatabase PinmemberMember 785799719-Jun-12 1:23 
QuestionFaulty behavior Pinmembercilker18-Jun-12 11:09 
Questionthanks Pinmemberr4p27-May-12 0:42 
SuggestionJust for 2003 Pinmemberdyboo21-Mar-12 23:56 
QuestionRetrieve Excel Workbook Sheet Names. PinmemberMember 805059211-Nov-11 1:29 
GeneralMy vote of 5 PinmemberGiannakakis Kostas3-Aug-11 22:14 
GeneralMy vote of 5 PinmemberAnkit Rajput21-Jul-11 3:17 
GeneralMy vote of 5 Pinmemberpadmanabhan N10-Dec-10 1:30 
GeneralC# to C++ Pinmembermaklein9918-Oct-10 7:31 
GeneralMy vote of 5 Pinmembern52615-Jul-10 19:41 
GeneralOrder of Table PinmemberTom arnold25-Feb-10 16:53 
GeneralExcellent PinmemberMAP Tiger14-Jan-10 19:26 
Generalgetting error "no error message available, result code:E_UNEXPECTED (0x8000FFFF) PinmemberAlamelu Suresh10-Nov-09 20:31 
Hi Kenny,
I have used the code given above in a C# .Net Windows Excel project. It is working in about 5 computers perfectly well. Today when I was installing it on a users machine it gave the error "no error message available, result code:E_UNEXPECTED (0x8000FFFF) while I think it is trying to open the OLEDb connection.
Actually it is returning null in place of the worksheet name. I tried to figure out the problem but could not succeed. Please help me.
 
Thanks in advance.
QuestionHow can i use this code on linux PinmemberAlex_30208647-Sep-09 2:35 
GeneralGreat! Pinmemberpjvanzyl@yahoo.com30-Jun-09 3:32 
GeneralThanks PinmemberKenneth_Scott11-Jun-09 7:26 
GeneralVery Helpful Pinmemberaccusteve25-Mar-09 10:10 
GeneralVery useful Artical Pinmembersorabh.jain17-Feb-09 20:43 
GeneralOrder of Tabs Pinmembersdb777-Oct-08 4:52 
GeneralRe: Order of Tabs PinmemberKhan_alpha15-Sep-09 7:47 
GeneralRe: Order of Tabs Pinmembersdb7715-Sep-09 9:13 
QuestionHow to get the real names? Without $ or ' Pinmemberfanndibong6-Apr-08 19:39 
AnswerRe: How to get the real names? Without $ or ' PinmemberFilipKrnjic24-Oct-11 23:03 
GeneralGood article Pinmemberjunique4-Mar-08 9:48 
GeneralRe: Good article Pinmemberronny_2957-Jan-09 17:47 
Generalaccess to excel Pinmemberhamedeng7-Sep-07 8:37 
GeneralC# - Inserting Rows in Excel WorkSheet PinmemberXBenedict12-Jul-07 23:04 
GeneralRe: C# - Inserting Rows in Excel WorkSheet Pinmemberprivacy space23-Aug-07 23:35 
GeneralPassword Protected PinmemberRedDogEdward5-Dec-06 2:51 
GeneralDoesn't seem to work with Excel 5.0 files. Pinmembertolsen649-Feb-06 13:37 
GeneralAdd Worksheet PinmemberBikash Rai7-Oct-05 21:25 
GeneralGetting retriving excel sheets Pinmembergodfathers2-Mar-05 23:09 
GeneralRe: Getting retriving excel sheets Pinmemberabhi kumar16-Aug-05 21:05 
QuestionA Better Way??? PinsussAnonymous30-Oct-04 13:32 
AnswerRe: A Better Way??? PinmemberMike Ellison30-Oct-04 14:59 
AnswerRe: A Better Way??? Pinmembergg423713-Nov-09 1:44 
GeneralExcel Sheets PinsussAnonymous15-Sep-04 10:23 
GeneralGood Work Pinmemberterence wallace30-Aug-04 18:45 
Generalgood tip PinmemberAshley van Gerven26-Aug-04 17:31 
GeneralRe: good tip PinmemberLabrat00226-Aug-04 21:17 
GeneralRe: good tip PinmemberAshley van Gerven30-Aug-04 4:18 
QuestionHidden Sheets? PinmemberMike Ellison26-Aug-04 8:12 
AnswerRe: Hidden Sheets? PinmemberKen G Young30-Aug-04 10:47 
QuestionRe: Hidden Sheets? Pinmemberankitbansal8230-Oct-06 2:16 
AnswerRe: Hidden Sheets? PinmemberSuperDuckZA_PS27-Jul-07 3:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.1411023.1 | Last Updated 26 Aug 2004
Article Copyright 2004 by Kenny Young
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid