Ouverture d'un classeur XLS spécifique dans un script JMP<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai un XLS (BigData.xls) qui a des onglets de classeur nommés "US", "Canada" et "Ireland".
J'ai un script qui doit uniquement ouvrir/lire l'onglet Canada.Existe-t-il une commande de script JMP pour le faire ?J'essaie d'éviter d'utiliser les boîtes de dialogue manuelles pour afficher l'onglet Canada.
Merci!
Re : Ouverture d'un classeur XLS spécifique dans un script JMPDave, merci comme toujours. J'emprunterai une partie de ce code pour obtenir des performances constantes sur les variantes de la v10 que nous avons en interne.
Re : Ouverture d'un classeur XLS spécifique dans un script JMPUne méthode grossière (mais efficace) que j'ai utilisée dans le passé consistait à ouvrir le classeur entier de manière invisible, puis à fermer ceux que je ne voulais pas.Vérifiez les tables qui sont présentes après l'ouverture par rapport à celles qui étaient ouvertes avant, et cela vous donne les noms des classeurs dans la feuille de calcul.
Comme vous l'avez remarqué, les préférences de l'utilisateur peuvent poser problème - voici un modèle de code à détecter pour une préférence, définissez-le sur ce dont vous avez besoin, puis restaurez-le :
// preference to check
searchPref = "Excel Has labels";
// check the preference
prefs = Char( Get Preferences() );
p = Pat Match( prefs, searchPref + "(" + Pat Arb() >> strResult + ")" );
If ( p == 0,
Write( "!NFailed to find value for " || searchPref )
,
result = Parse( strResult );
Show( result );
);
// set it to what you want
Set Preferences(Excel Has Labels(2));
// do your stuff
Open(nsSFEPM:pathMDSS, invisible)
// restore the user preference
Eval(Parse(Eval Insert("\[
Set Preferences(Excel Has Labels(^result^));
]\")));
-Dave
Re : Ouverture d'un classeur XLS spécifique dans un script JMPJe viens d'essayer cela dans le code et j'ai demandé à un autre utilisateur de le tester également. J'ai découvert que les préférences de l'utilisateur priment sur l'argument de la fonction. Dans le JSL, je spécifie quelle feuille ouvrir, mais si la préférence de l'utilisateur indique d'inviter, il est invité ! Cela semble contre-intuitif à l'utilisation de la fonction...
[Modifier] Mon utilisateur a 10.0.0 et la préférence prévalait sur le code. Ma machine a 10.0.2 et le code l'a emporté sur la préférence. Bien sûr, je n'ai rien vu du tout dans la documentation "Quoi de neuf dans la version 10.0.x" concernant cette fonction...
Re : Ouverture d'un classeur XLS spécifique dans un script JMPJe viens de trouver ceci aujourd'hui (l'option feuilles de calcul de la commande Ouvrir), ce qui m'a été très utile. Cependant, il n'apparaissait pas dans les pages d'aide de l'application, ce qui aurait été plus utile !
Re : Ouverture d'un classeur XLS spécifique dans un script JMPBien que la discussion plus ancienne ait aidé, la syntaxe n'était pas correcte.Le nom de la feuille de calcul doit être placé entre crochets et vous devez ajouter un $ à la fin du nom de la feuille de calcul.Donc, si ma feuille de calcul avait la feuille de calcul appelée démo, la syntaxe correcte est :
FullyQualifiedFile = "c:\$user\ResearchData\FY2012.xls";
ODB_String = "DSN=Excel Files;DBQ=" || FullyQualifiedFile;
dt = Open Database(ODB_String,"SELECT * FROM [demo$]");
Re : Ouverture d'un classeur XLS spécifique dans un script JMPSi vous utilisez Open Database() au lieu de Open(), des feuilles individuelles peuvent être spécifiées dans la chaîne SQL.
Regarde cette ancienne discussion :
Re : Ouverture d'un classeur XLS spécifique dans un script JMPJMP 8.0.1
Des solutions de contournement suggérées ?
Re : Ouverture d'un classeur XLS spécifique dans un script JMPDésolé, j'aurais dû préciser que cette option a été ajoutée dans JMP 10.
Utilisez-vous JMP 10 ou une version antérieure ?
-Jeff
Re : Ouverture d'un classeur XLS spécifique dans un script JMPN'a pas fonctionné.TOUTES les feuilles de travail se sont ouvertes lorsque j'ai spécifié Feuilles de calcul ( "small" ) ou Feuilles de calcul ( {"Small"} )
Re : Ouverture d'un classeur XLS spécifique dans un script JMPVous pouvez utiliser le mot clé Worksheets() :
open("C:\data\cars.xlsx", Worksheets("small"));
Importez plusieurs feuilles de calcul en incluant les noms des feuilles de calcul entre parenthèses :
open("C:\data\cars.xlsx", Worksheets( {"small", "medium", "large"} ));