Heim >Backend-Entwicklung >C++ >Wie kann ich mit OLEDB Excel-Tabellennamen in ihrer ursprünglichen Reihenfolge abrufen?

Wie kann ich mit OLEDB Excel-Tabellennamen in ihrer ursprünglichen Reihenfolge abrufen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-05 15:46:41848Durchsuche

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

Abrufen von Excel-Tabellennamen in der Tabellenreihenfolge mithilfe von OLEDB

Die Aufgabe, Tabellennamen aus einer Excel-Arbeitsmappe abzurufen, tritt häufig in der Programmierung auf. Allerdings kann es bei der Verwendung von OleDb eine Herausforderung sein, diese Namen in der Reihenfolge zu erhalten, in der sie in der Tabelle definiert sind.

Problemdefinition

Durch die alphabetische Neuanordnung der Blattnamen kann OleDbConnection. GetOleDbSchemaTable() liefert die Blattnamen nicht in der gewünschten Reihenfolge. Dies behindert die Fähigkeit des Benutzers, den Datenabruf basierend auf dem Blattnamen oder dem Index anzugeben, was zu Verwirrung führt.

Lösung mit verschachtelten Schleifen

Ein Ansatz besteht darin, die Blätter nacheinander zu durchlaufen von Blatt 0 bis zur Anzahl der Blätter minus 1. Dies gewährleistet die Beibehaltung der Blattreihenfolge.

Implementierung Verwendung von OLEDB

Wenn die Verwendung der Office Interop-Klassen nicht möglich ist, ist eine Lösung mithilfe von OLEDB verfügbar:

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

Dieser Code stellt eine Verbindung zur Excel-Datei her und ruft die Datentabelle ab, die Folgendes enthält Blattnamen und füllt einen String[] mit diesen Namen in der Reihenfolge, in der sie in der Tabelle erscheinen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit OLEDB Excel-Tabellennamen in ihrer ursprünglichen Reihenfolge abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn