Heim >Backend-Entwicklung >C++ >Wie kann ich mit OLEDB Excel-Tabellennamen in ihrer ursprünglichen Reihenfolge abrufen?
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!