Wie überspringe ich ein bestimmtes Arbeitsblatt beim Importieren einer Excel-Datei?Hallo JMP-Forum,
Ich verwende JMP 16. Ich suche nach einer Möglichkeit, eine Excel-Tabelle mit mehreren Arbeitsblättern zu importieren, möchte aber den Import eines bestimmten Arbeitsblatts mit dem Namen „Zusammenfassung“ überspringen. Gibt es eine Möglichkeit, hierfür ein Skript zu schreiben?
Bitte beachten: Ich erstelle regelmäßig einen Bericht mit einer solchen Excel-Datei. Und die Anzahl und Namen der Arbeitsblätter (außer „Zusammenfassung“) variieren jedes Mal.
Danke
DatenzugriffWindowsBetreff: Wie überspringe ich ein bestimmtes Arbeitsblatt beim Importieren einer Excel-Datei?Danke Thierry! Das ist toll!
Betreff: Wie überspringe ich ein bestimmtes Arbeitsblatt beim Importieren einer Excel-Datei?Hi,
Nachdem ich Ihr Skript überprüft habe, denke ich, dass es einen viel direkteren Ansatz gibt, um dieselbe Lösung zu erreichen:
Names Default to Here (1);
xlfid = Pick File(
"Select the Excel File", //prompt
"$Documents", //starting path
{"Excel Files|xls;xlsx", "Excel Files|*"}, //file types
1,
0,
""
);
dt = Open(xlfid,
//Worksheets(),
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ), //CONCATEMATE IS ON
Create Concatenation Column( 1 ), //CREATE CONCAT COLUMN IS ON
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 7 ), // First seven rows are headers
Headers Start on Row( 1 ),
Data Starts on Row( 13 ), // Data starts on row 13
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "_" )
)
);
dt << Select where (contains(:Source Table, "Summary"));
dt << Delete Rows;
Entschuldigung für den verschlungenen Weg, den ich genommen habe, um zu diesem einfacheren Ansatz zu gelangen.
Am besten,
TS
Betreff: Wie überspringe ich ein bestimmtes Arbeitsblatt beim Importieren einer Excel-Datei?Hi,
Versuchen Sie, den letzten Teil Ihres Skripts durch das folgende Snippet zu ersetzen:
tb_list = Get Data Table List ();
for (i = 1, i <= N Items (tb_list), i++,
if(i == 1, my_dt = tb_list [i],
concatenate(Data Table (my_dt), Data Table (tb_list[i]), "Append to first table")
)
);
Beachten Sie, dass das obige Skript-Snippet so wie es ist gut funktioniert, aber es funktioniert nicht richtig, wenn Sie den Schalter "Quellspalte erstellen" hinzufügen, da jede Verkettungsrunde neue Spalten erstellt, was zu einem Durcheinander von Tabellenkennungen führt
.Am besten,
TS
Betreff: Wie überspringe ich ein bestimmtes Arbeitsblatt beim Importieren einer Excel-Datei?Hallo Thierry,
Dies funktioniert – die Datentabelle „Zusammenfassung“ wird verworfen. Vielen Dank!
Ich mache jedoch einen Fehler bei der Verwendung der for () -Schleife zum Verketten. Teile meinen Code unten. Würde mich über Ihre Anleitung hier freuen
Names Default to Here (1);
xlfid = Pick File(
"Select the Excel File", //prompt
"$Documents", //starting path
{"Excel Files|xls;xlsx", "Excel Files|*"}, //file types
1,
0,
""
);
dt = Open(xlfid,
//Worksheets(),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 7 ), // First seven rows are headers
Headers Start on Row( 1 ),
Data Starts on Row( 13 ), // Data starts on row 13
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "_" )
)
);
<BR />// Identifying and closing 'Summary' datatable
tb_list = Get Data Table List ();
for (i = 1, i <= N Items (tb_list), i++,
tb_name = tb_list [i] << Get Name;
if (contains(tb_name, "Summary"), Close (tb_list[i],NoSave))
);
<BR />// (1) Concatenating in to single datatable 'my_dt'.<BR />// (2) Closing individual datatables.<BR />
tb_list = Get Data Table List ();
for (i = 1, i <= N Items (tb_list), i++,
my_dt = Data Table( tb_list [1] ) << Concatenate(
Data Table( tb_list [i+1] ),
Create source column,<BR /> Close (tb_list[i],NoSave)
)
);Betreff: Wie überspringe ich ein bestimmtes Arbeitsblatt beim Importieren einer Excel-Datei?Hier ist ein kurzes Skript zum Verwerfen von Datentabellen mit einem Namen, der „Zusammenfassung“ enthält:
Names Default to Here (1);
tb_list = Get Data Table List ();
for (i = 1, i <= N Items (tb_list), i++,
tb_name = tb_list [i] << Get Name;
if (contains(tb_name, "Summary"), Close (tb_list[i],NoSave))
);
Sie können dann den Befehl Get Data Table List () erneut ausführen und die verbleibenden Tabellen zu einer neuen Datentabelle verketten.
Am besten,
TS
Betreff: Wie überspringe ich ein bestimmtes Arbeitsblatt beim Importieren einer Excel-Datei?Danke Thierry!
Ich bin nicht sehr vertraut mit der Verwendung von List(), daher wäre ein Beispielskript hilfreich 
Mein Plan ist es, den Rest der Arbeitsblätter (außer 'Zusammenfassung') zu verketten.
Grüße
Betreff: Wie überspringe ich ein bestimmtes Arbeitsblatt beim Importieren einer Excel-Datei?Hi,
Eine einfache "schmutzige" Methode, dies zu handhaben, wäre, alle Arbeitsblätter zu öffnen, die Namen aller geöffneten Tabellen aufzuzeichnen [Get Data Table List()] und die Tabelle mit name == "Summary", [Close (dt, NoSave )].
Lassen Sie uns wissen, wenn Sie ein aktuelles Beispiel eines Skripts benötigen, um diese Befehle zusammenzustellen.
Am besten,
TS