Home > Backend Development > C++ > How to Retrieve Excel Sheet Names in Their Original Order Using OLEDB?

How to Retrieve Excel Sheet Names in Their Original Order Using OLEDB?

Linda Hamilton
Release: 2025-01-05 15:46:41
Original
873 people have browsed it

How to Retrieve Excel Sheet Names in Their Original Order Using OLEDB?

Retrieving Excel Sheet Names in Sheet Order Using OLEDB

The task of retrieving sheet names from an Excel workbook is commonly encountered in programming. However, obtaining these names in the order they are defined in the spreadsheet can be challenging when using OleDb.

Problem Definition

By rearranging the sheet names alphabetically, OleDbConnection.GetOleDbSchemaTable() fails to provide sheet names in the desired order. This hinders the user's ability to specify data retrieval based on sheet name or index, leading to confusion.

Solution Using Nested Looping

One approach involves iterating through the sheets sequentially from sheet 0 to the number of sheets minus 1. This ensures the preservation of sheet order.

Implementation Using OLEDB

If using the Office Interop classes is not feasible, a solution using OLEDB is available:

/// <summary>
/// Retrieves 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
        String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
          "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";

        // Create connection and open connection to database
        objConn = new OleDbConnection(connString);
        objConn.Open();

        // Get data table containing schema guid
        dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        if(dt == null)
           return null;

        // Initialize String[] to store sheet names.
        String[] excelSheets = new String[dt.Rows.Count];
        int i = 0;

        // Add sheet name to the string array.
        foreach(DataRow row in dt.Rows)
        {
           excelSheets[i] = row["TABLE_NAME"].ToString();
           i++;
        }

        return excelSheets;
   }
   catch(Exception ex)
   {
       return null;
   }
   finally
   {
      // Clean up connection and data table
      if(objConn != null)
      {
          objConn.Close();
          objConn.Dispose();
      }
      if(dt != null)
      {
          dt.Dispose();
      }
   }
}
Copy after login

This code connects to the Excel file, retrieves the data table containing sheet names, and populates a String[] with these names in the order they appear in the spreadsheet.

The above is the detailed content of How to Retrieve Excel Sheet Names in Their Original Order Using OLEDB?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template