Wie kann ich eine Liste der Blätter in einer Excel-Arbeitsmappe erhalten?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe eine Situation, in der ich Excel-Tabellen mit Open Database() öffne.
Dies war eine gute Möglichkeit, da ich bestimmte Spalten aus bestimmten Tabellenblättern möchte. Daher ist die Verwendung einer SQL-SELECT-Anweisung ideal.
Ich stelle jetzt fest, dass es keine Standardisierung der Blattnamen gibt. Ich möchte also die Excel-Arbeitsmappe abfragen und eine Liste der darin enthaltenen Blätter erhalten. Ich kann dann eine gewisse Logik in meinem Code verwenden, um zu entscheiden, welche ich tatsächlich möchte (denn obwohl es keine Standardisierung gibt, gibt es genügend „Ähnlichkeiten“, sodass ich herausfinden kann, was ich möchte, indem ich überprüfe, ob der Blattname StringA oder StringB enthält oder StringC zum Beispiel)
Ich habe keine Ahnung, wie das in JSL gemacht werden kann. Wenn man online sucht, gibt es viele Codebeispiele mit VBScripting usw., die die Blätter in einer Excel-Arbeitsmappe zurückgeben, aber das ist keine große Hilfe.
Ich habe auch versucht, eine SQL-Anweisung zu finden, die das erledigt, aber ich kenne keinen Tabellennamen, der die „Tabellen“/Blätter in der Arbeitsmappe auflisten würde.
Ich weiß, dass JMP das kann, denn wenn ich Datei -> Datenbank -> Tabelle öffnen verwende und eine Verbindung zu einer Excel-Datenquelle herstelle, werden alle verfügbaren Blätter in der Spalte Schemas – Tabellen aufgelistet. Wenn ich eine Benutzereinstellung zur Auswahl einzelner Excel-Arbeitsblätter einstelle und den Befehl „Open()“ verwende, werde ich ebenfalls aufgefordert, auszuwählen, welche Blätter ich öffnen möchte.
Meine Frage ist also: Weiß jemand, ob JMP diese Möglichkeit zur Ermittlung der Excel-Tabellennamen für die Skriptsprache verfügbar macht?
vielen Dank
Thomas
Betreff: Wie kann ich eine Liste der Blätter in einer Excel-Arbeitsmappe erhalten?Der letzte Schritt kann zu Problemen führen, wenn Sie Datentabellen geöffnet haben, bevor Sie die Excel-Arbeitsblätter öffnen.Schnelle Korrektur ist
for(i=1, i <= nSheets, i++, dtname = Datentabelle (d. h +countBefore ) << Name abrufen);
Wie kann ich eine Liste der Blätter in einer Excel-Arbeitsmappe erhalten?Beachten Sie, dass das obige Codefragment korrigiert wurde.
Betreff: Wie kann ich eine Liste der Blätter in einer Excel-Arbeitsmappe erhalten?Dies ist ein sehr umständlicher Weg, der möglicherweise nicht einmal möglich ist, wenn die Tische sehr groß sind. Nur ein Fragment ...
1. Legen Sie die Einstellungen fest, um alle Excel-Tabellen bei „Datei“ > „Öffnen“ zu öffnen.
2. countBefore = N Table();
3. Öffnen Sie die Excel-Datei mit open()
4. countAfter = N Table();
5. nSheets = countAfter – countBefore
5. dtname = {};
5. for(i=1, i <= nSheets, i++, dtname = Datentabelle(i) << get name);
Dann ist dtname eine Liste von Tabellennamen, mit denen Sie spielen können, und Sie können die Tabellen schließen, die Sie nicht möchten.
Die Nachricht wurde bearbeitet von: mpb
Die Indizierung im Codefragment wurde korrigiert.
Betreff: Wie kann ich eine Liste der Blätter in einer Excel-Arbeitsmappe erhalten?Dies ist ein alter Thread, aber ich fand ihn nützlich. Hier ist ein Skript, das dies tut, indem es den Inhalt der XLSX-Datei direkt öffnet. XLSX-Dateien sind einfach ZIP-Dateien mit einer Sammlung von XML-Dateien, die die Eigenschaften, die Struktur und die Elemente der Arbeitsmappe definieren.
Names Default To Here( 1 );
filename = pick file("Choose Excel File", "$DOCUMENTS", {"Excel Files|xlsx"} );
zipxlsx = Open( filename, Zip );
zip_file = zipxlsx << read( "xl/workbook.xml", Format( blob ) );
// Open the file
zz = Open(
zip_file,
invisible,
xml,
XML Settings(
Stack( 0 ),
Row( "/workbook/sheets/sheet" ),
Col(
"/workbook/sheets/sheet/@name",
Column Name( "name" ),
Fill( "Use Once" ),
Type( "Character" ),
Format( {"Best"} ),
Modeling Type( "Nominal" )
)
)
);
worksheets=(zz:name << get values);
close(zz, nosave);
write(worksheets);Betreff: Wie kann ich eine Liste der Blätter in einer Excel-Arbeitsmappe erhalten?
Betreff: Wie kann ich eine Liste der Blätter in einer Excel-Arbeitsmappe erhalten?Ernsthaft? Wie konnte ich das nicht wissen? Trotzdem danke, sehr hilfreich!
Betreff: Wie kann ich eine Liste der Blätter in einer Excel-Arbeitsmappe erhalten?Wie konnten Sie das nicht wissen? Weil Sie nur ein Mensch sind. Niemand kann alles über JMP wissen und dann erscheinen etwa alle 18 Monate eine Vielzahl neuer Features und Funktionen in einer neuen Version. Ich persönlich lerne so viel von Ihnen und Ihren Beiträgen zu so vielen Dingen in JMP, die ich nicht weiß oder nicht mehr weiß.