Prüfen Sie, ob ein Excel-Arbeitsblatt vorhanden istIch möchte ein JMP-Skript schreiben, das versucht, ein bestimmtes Arbeitsblatt aus Excel zu öffnen.
Das Problem ist, wenn eine meiner Excel-Dateien das angeforderte Arbeitsblatt nicht enthält, wird das JMP-Skript Crush .
Ich brauche Rat, wie kann ich das verhindern? (Ich meine, prüfen Sie, bevor Sie das Excel öffnen, ob es das angeforderte Arbeitsblatt enthält..)
das ist mein Code:
add_to_DB = function({file_path, sheet, header_line, data_line},
new_dt = Öffnen (
Dateipfad,
Arbeitsblätter (Blatt),
Arbeitsblatteinstellungen (
Kopfzeilen beginnen in Zeile ( header_line ),
Daten beginnen in Zeile ( data_line ))
);
......
Betreff: Prüfen Sie, ob ein Excel-Arbeitsblatt vorhanden istWenn Sie jemals eine Liste von Blattnamen finden möchten, die in der Excel-Arbeitsmappe vorhanden sind, können Sie Folgendes verwenden:
sheetList = Excel-Arbeitsblätter abrufen( "$SAMPLE_IMPORT_DATA\Team Results.xlsx" );
Show( sheetList );
Brian Corcoran
JMP-Entwicklung
Betreff: Prüfen Sie, ob ein Excel-Arbeitsblatt vorhanden istdas funktioniert gut.
Danke
Betreff: Prüfen Sie, ob ein Excel-Arbeitsblatt vorhanden istIch bezweifle, dass es welche gab Absturz .
Ich kenne keine Möglichkeit für ein Skript, das Vorhandensein eines bestimmten Blatts in einer Excel-Arbeitsmappe oder bestimmten Inhalten in einem anderen externen Dateityp zu überprüfen. Deine Lösung wird also nicht funktionieren.
Fehlerbedingungen wie Ihre treten im wirklichen Leben ständig auf. Es gibt Möglichkeiten, mit ihnen im Skript umzugehen. Hast du schon JSL gelernt? Du solltest lesen Hilfe > Bücher > Skriptleitfaden . Kapitel 8 in der aktuellen Version behandelt Programmiermethoden wie Fehlerbehandlung.
Sind Sie sicher, dass Ihr Code funktioniert, wenn das gewünschte Blatt vorhanden ist?
Eine Möglichkeit besteht darin, darauf zu achten, was die Open()-Funktion zurückgibt. Was wird an das Protokoll zurückgegeben? Hast du es dir angeschaut? Sie könnten das Ergebnis in einer Variablen speichern und dann testen, ob es erfolgreich war.
Alternativ können Sie den integrierten Fehlerbehandlungsmechanismus verwenden, um die Fehlerbedingung abzufangen. In Ihrem Fall würde dieser Mechanismus wie in diesem Beispiel funktionieren:
Try(
new_dt = Open(
file_path,
Worksheets( sheet ),
Worksheet Settings( Headers Start on Row( header_line ), Data Starts on Row( data_line ) )
),
// code in case Open() fails
);;
// code in case Open() succeeds