Come posso ottenere un elenco di fogli in una cartella di lavoro di Excel?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho una situazione in cui sto aprendo fogli Excel usando Open Database().
Questo è stato un buon modo per farlo poiché desidero colonne specifiche da fogli specifici, quindi l'utilizzo di un'istruzione SQL SELECT è l'ideale.
Ora sto scoprendo che non c'è standardizzazione sui nomi dei fogli. Quindi quello che voglio fare è interrogare la cartella di lavoro di Excel e ottenere un elenco di fogli al suo interno. Posso quindi utilizzare un po' di logica nel mio codice per decidere quali voglio effettivamente (perché mentre non c'è standardizzazione, ci sono abbastanza "somiglianze" da poter capire cosa voglio, controllando se il nome del foglio contiene StringA o StringB o StringC per esempio )
Non ho idea di come questo possa essere fatto in JSL. Cercando solo, ci sono molti esempi di codice che usano VBScripting ecc. Che restituiranno i fogli in una cartella di lavoro di Excel, ma questo non è di grande aiuto.
Ho provato anche a trovare qualche istruzione SQL che lo facesse, ma non conosco un nome di tabella che elenchi le "tabelle"/fogli nella cartella di lavoro.
So che JMP può farlo perché se utilizzo File -> DataBase -> Apri tabella e mi collego a un'origine dati Excel, elencherà tutti i fogli disponibili nella colonna Schemi - Tabelle. Allo stesso modo, se imposto una preferenza utente per selezionare singoli fogli di lavoro Excel e utilizzare il comando Apri (), mi chiederà di selezionare i fogli che desidero aprire.
Quindi la mia domanda è: qualcuno sa se JMP espone tale capacità per capire i nomi dei fogli Excel nel linguaggio di scripting?
grazie molto
Tommaso
Ri: Come posso ottenere un elenco di fogli in una cartella di lavoro di Excel?L'ultimo passaggio potrebbe farti incasinare se hai tabelle di dati aperte prima di aprire i fogli di lavoro Excel.La correzione rapida è
for(i=1, i <= nFogli, i++, dtname = Tabella dei dati (i +contaPrima ) << prendi nome);
Come posso ottenere un elenco di fogli in una cartella di lavoro di Excel?Si noti che il frammento di codice sopra è stato corretto.
Ri: Come posso ottenere un elenco di fogli in una cartella di lavoro di Excel?Ecco un modo molto goffo che potrebbe non essere nemmeno fattibile se i tavoli sono molto grandi. Solo un frammento...
1. Impostare le preferenze per aprire tutti i fogli Excel su file>apri.
2. countBefore = N Tabella();
3. Apri il file Excel usando open()
4. countAfter = N Table();
5. nSheets = countAfter - countBefore
5. dtname = {};
5. for(i=1, i <= nFogli, i++, dtname = Tabella dati(i) << prendi nome);
Quindi dtname è un elenco di nomi di fogli con cui puoi giocare e puoi chiudere i tavoli che non vuoi.
Il messaggio è stato modificato da: mpb
Corretta l'indicizzazione nel frammento di codice.
R: Come posso ottenere un elenco di fogli in una cartella di lavoro di Excel?Questo è un vecchio thread, ma l'ho trovato utile. Ecco uno script che lo farà aprendo direttamente il contenuto del file XLSX. I file XLSX sono semplicemente file ZIP con una raccolta di file XML che definiscono le proprietà, la struttura e gli elementi della cartella di lavoro.
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);R: Come posso ottenere un elenco di fogli in una cartella di lavoro di Excel?
R: Come posso ottenere un elenco di fogli in una cartella di lavoro di Excel?Davvero? Come ho fatto a non saperlo? Grazie comunque, molto utile!
R: Come posso ottenere un elenco di fogli in una cartella di lavoro di Excel?Come hai fatto a non saperlo... perché sei umano. Nessuno può sapere tutto su JMP e poi ogni 18 mesi circa, una pletora di nuove funzionalità e funzioni escono in una nuova versione. Personalmente, imparo così tanto da te e dai tuoi contributi su così tante cose su JMP che non conosco o non ricordo più.