J'ai un script qui importe des fichiers de mesure d'Excel dans un fichier combiné, puis extrait une partie de l'ID de fichier dans une colonne `` ID de pièce '', qui doit ensuite référencer une table avec une `` clé de code '' reliant l'ID de fichier à l'ID de fichier réel ID de pièce.
Le fichier Excel a trois feuilles de calcul, une seule qui est utile en termes de données. L'importation est facile.
Je voudrais saisir directement l'ID de pièce * réel *, qui se trouve dans la cellule D7 de la première feuille de calcul.
Existe-t-il un moyen de récupérer cette valeur de chacun d'un nombre indéterminé de fichiers et de la stocker dans un tableau ou une autre variable, puis de la vider dans le fichier principal?
Vous pouvez traiter un classeur Microsoft Excel comme une base de données relationnelle. De cette façon, vous pouvez utiliser SQL pour spécifier une requête pour la valeur souhaitée. Vous pouvez effectuer tout le processus de manière interactive pour vous assurer qu'il fonctionne, puis la table de données résultante aura un script de table source avec le JSL dont vous avez besoin.
Début ici dans la documentation en ligne JMP pour des instructions complètes et des exemples.
@ andersonmj2 ,
Si vous n'avez pas configuré ODBC, vos fichiers système configurés, il peut y avoir un peu de courbe d'apprentissage, surtout si vous avez installé Office 32 bits sur votre PC.
Marque, @markbailey , à partir de JMP 13 et au début de JMP14, les instructions de Microsoft Office pour utiliser le SYSWOW n'étaient pas très fiables; les instructions fonctionneraient pour certains PC et pas pour d'autres. JMP a-t-il fait quelque chose depuis le début de JMP 14 pour configurer DBase et Text et Excel ODBC? Si oui, je suis intéressé. Sinon, un PDF a été écrit pour JSL Companion avec des instructions détaillées qui semblent fiables, mais qui comporte plusieurs étapes. Je pense que cela vaut la peine de mettre en place l'effort de pouvoir interroger différents types de fichiers en utilisant SQL.
Le script ci-dessous montre donc une alternative à l'aide de l'assistant JMP Excel. Il n'y a aucune garantie de performance. Ce script montre le JSL pour un fichier, le script devrait créer une boucle pour adresser tous les fichiers.
Voir le journal pour le résultat cid = "70.gg.7";
Notez que la 8ème valeur est utilisée car les en-têtes de colonne Excel (A, B, ...) représentent 1 ligne.
Names Default to Here(1);
//create Excel workbook
dt1_1 = New Table("Dummy",
New Column("A", Character, Values({"red", "white", "green", "blue", "yellow", "orange", "black", "magenta"})),
New Column("B", Numeric, Values({1,2,3,4,5,6,7,8})),
New Column("C", Numeric, Values({10,20,30,40,50,60,70,80})),
New Column("D", Character, Values({"10.aa1","20.bb.2", "30.cc.3", "40.dd.4", "50.ee.5","60.ff.6", "70.gg.7","80.hh.8"})),
New Column("E", Numeric, Values({101,102,103,104,105,106,107,108}))
);
wait(0);
dt1_2 = Open("$sample_data/Big Class.jmp");
dt1_3 = Open("$sample_data/Iris.jmp");
Create Excel Workbook("c:/temp/Test_GetExcelValue.xlsx", {"Dummy", "Big Class", "Iris"}, {"Sheet1", "Sheet2", "Sheet3"});
wait(0);
Close(dt1_1,Nosave);
Close(dt1_2,Nosave);
Close(dt1_3,Nosave);
//========================================================================
xl_dt3 = Open( "c:/temp/Test_GetExcelValue.xlsx", Invisible,
Worksheets("Sheet1"),
Worksheet Settings(1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 8 ),
Data Starts on Column( 4 ),
Data Ends on Row(8), //0 >> not set, read to end of rows
Data Ends on Column(4), //0 >> not set, read to end of cols
)
);
cid = xl_dt3[1,1];
close(xl_dt3,NoSave);
show(cid);