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

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

Barbara Streisand
Barbara Streisandoriginal
2025-01-03 01:16:41268parcourir

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

Acquérir des noms de feuilles Excel dans un ordre séquentiel avec OleDb

Dans le domaine des opérations sur les feuilles de calcul, obtenir une liste de noms de feuilles Excel dans le sens précis l’ordre défini dans le classeur peut être une tâche cruciale. Pour y parvenir avec OleDb, une approche spécifique est requise.

À l'origine, l'utilisation de OleDbConnection.GetOleDbSchemaTable() pour récupérer les noms de feuilles a été tentée, mais elle a rencontré un problème : le tri alphabétique. Cela a perturbé l'ordre prévu des noms et a posé un défi pour les mapper aux numéros de feuille correspondants.

Heureusement, il existe une solution qui contourne cet obstacle : parcourir les feuilles de manière séquentielle depuis l'index 0 jusqu'au nombre total de noms. Cela garantit que les noms sont récupérés dans l'ordre souhaité.

Pour ceux qui recherchent une approche basée sur OLEDB, l'exemple de code suivant montre comment récupérer les noms de feuilles Excel dans leur ordre séquentiel :

private String[] GetExcelSheetNames(string excelFile)
{
    // Establish connection parameters
    string connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
        "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";

    // Create connection and database linkage
    using (OleDbConnection objConn = new OleDbConnection(connString))
    {
        objConn.Open();

        // Retrieve schema table
        DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        // Initialize array for sheet names
        String[] excelSheets = new String[dt.Rows.Count];

        // Populate array with sequential sheet names
        int index = 0;
        foreach (DataRow row in dt.Rows)
        {
            excelSheets[index++] = row["TABLE_NAME"].ToString();
        }

        return excelSheets;
    }
}

En employant cette technique, vous pouvez récupérer efficacement les noms des feuilles Excel dans l'ordre exact dans lequel ils apparaissent dans le classeur, permettant ainsi des interactions utilisateur transparentes basées sur le nom ou l'index.

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!

Déclaration:
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