Maison > développement back-end > C++ > Comment récupérer les noms de feuilles Excel dans leur ordre d'origine à l'aide d'OLEDB ?

Comment récupérer les noms de feuilles Excel dans leur ordre d'origine à l'aide d'OLEDB ?

Linda Hamilton
Libérer: 2025-01-05 15:46:41
original
848 Les gens l'ont consulté

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

Récupération des noms de feuilles Excel dans l'ordre des feuilles à l'aide d'OLEDB

La tâche de récupération des noms de feuilles à partir d'un classeur Excel est couramment rencontrée en programmation. Cependant, obtenir ces noms dans l'ordre dans lequel ils sont définis dans la feuille de calcul peut être difficile lors de l'utilisation d'OleDb.

Définition du problème

En réorganisant les noms des feuilles par ordre alphabétique, OleDbConnection. GetOleDbSchemaTable() ne parvient pas à fournir les noms de feuilles dans l'ordre souhaité. Cela entrave la capacité de l'utilisateur à spécifier la récupération de données en fonction du nom ou de l'index de la feuille, ce qui entraîne une confusion.

Solution utilisant la boucle imbriquée

Une approche consiste à parcourir les feuilles de manière séquentielle. de la feuille 0 au nombre de feuilles moins 1. Cela garantit la préservation de la feuille commande.

Implémentation utilisant OLEDB

Si l'utilisation des classes Office Interop n'est pas réalisable, une solution utilisant OLEDB est disponible :

/// <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();
      }
   }
}
Copier après la connexion

Ceci Le code se connecte au fichier Excel, récupère le tableau de données contenant les noms de feuilles et remplit une chaîne [] avec ces noms dans l'ordre dans lequel ils apparaissent dans le fichier Excel. feuille de calcul.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal