Click here to Skip to main content
15,179,830 members
Articles / Web Development / ASP.NET
Posted 25 Aug 2004


107 bookmarked

C# - Retrieve Excel Workbook Sheet Names.

Rate me:
Please Sign up or sign in to vote.
4.88/5 (84 votes)
25 Aug 2004
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.


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;

    // 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.
    // 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();

    // 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;
    // Clean up.
    if(objConn != null)
    if(dt != null)



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

Kenneth Young
United States United States
No Biography provided

Comments and Discussions

QuestionException: Could not find installable ISAM. Pin
Member 152742303-Jul-21 0:08
MemberMember 152742303-Jul-21 0:08 
QuestionThe function return array of string in sorted order. my original sheetnames are not getting returned. Pin
Member 1326987726-Jul-17 10:49
MemberMember 1326987726-Jul-17 10:49 
QuestionSee also this: Pin
dietmar paul schoder29-Jul-14 6:22
professionaldietmar paul schoder29-Jul-14 6:22 
Questionstop sorting Pin
Member 82406515-May-13 10:23
MemberMember 82406515-May-13 10:23 
Generalmy vote de 100 !!! Pin
Member 87144215-Sep-12 10:18
MemberMember 87144215-Sep-12 10:18 
Question_xlnm#_FilterDatabase Pin
com builder19-Jun-12 1:23
Membercom builder19-Jun-12 1:23 
QuestionFaulty behavior Pin
cilker18-Jun-12 11:09
Membercilker18-Jun-12 11:09 
Questionthanks Pin
r4p27-May-12 0:42
Memberr4p27-May-12 0:42 
SuggestionJust for 2003 Pin
dyboo21-Mar-12 23:56
Memberdyboo21-Mar-12 23:56 
QuestionRetrieve Excel Workbook Sheet Names. Pin
rozaq_jack11-Nov-11 1:29
Memberrozaq_jack11-Nov-11 1:29 
GeneralMy vote of 5 Pin
Giannakakis Kostas3-Aug-11 22:14
professionalGiannakakis Kostas3-Aug-11 22:14 
GeneralMy vote of 5 Pin
Ankit Rajput21-Jul-11 3:17
MemberAnkit Rajput21-Jul-11 3:17 
GeneralMy vote of 5 Pin
padmanabhan N10-Dec-10 1:30
Memberpadmanabhan N10-Dec-10 1:30 
GeneralC# to C++ Pin
maklein9918-Oct-10 7:31
Membermaklein9918-Oct-10 7:31 
GeneralMy vote of 5 Pin
n52615-Jul-10 19:41
Membern52615-Jul-10 19:41 
GeneralOrder of Table Pin
Tom arnold25-Feb-10 16:53
MemberTom arnold25-Feb-10 16:53 
GeneralExcellent Pin
MAP Tiger14-Jan-10 19:26
MemberMAP Tiger14-Jan-10 19:26 
Generalgetting error "no error message available, result code:E_UNEXPECTED (0x8000FFFF) Pin
Alamelu Suresh10-Nov-09 20:31
MemberAlamelu Suresh10-Nov-09 20:31 
QuestionHow can i use this code on linux Pin
Alex_30208647-Sep-09 2:35
MemberAlex_30208647-Sep-09 2:35 
GeneralGreat! Pin
P van Zyl30-Jun-09 3:32
MemberP van Zyl30-Jun-09 3:32 
GeneralThanks Pin
Kenneth_Scott11-Jun-09 7:26
MemberKenneth_Scott11-Jun-09 7:26 
GeneralVery Helpful Pin
accusteve25-Mar-09 10:10
Memberaccusteve25-Mar-09 10:10 
GeneralVery useful Artical Pin
sorabh.jain17-Feb-09 20:43
Membersorabh.jain17-Feb-09 20:43 
GeneralOrder of Tabs Pin
sdb777-Oct-08 4:52
Membersdb777-Oct-08 4:52 
GeneralRe: Order of Tabs Pin
Khan_alpha15-Sep-09 7:47
MemberKhan_alpha15-Sep-09 7:47 

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

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