Besoin d'aide pour importer Excel, une feuille de calcul spécifique avec le titre du classeur pour la concaténation avec un tableau existantJ'ai une multitude de fichiers Excel à partir desquels je transfère des données vers JMP pour analyse. Jusqu'à récemment, je faisais cela d'une manière très médiévale où j'ouvrais les fichiers Excel manuellement et copiais les informations pertinentes directement dans les tables JMP. Bien que cela soit tenable, je pense que la fonction d'importation (ainsi que la concaténation à ajouter aux tableaux de données existants) est une bien meilleure solution à long terme pour améliorer l'efficacité.
Mes informations pertinentes se trouvent dans la feuille 4 de chaque classeur et sont étiquetées « cycle ». Je dois importer entre 4 et 20 classeurs de ce type à la fois, avec lesquels mettre à jour mes tables JMP. Chaque classeur a un titre de chaîne, généralement de 8 caractères. Il s'agit d'un identifiant unique pour l'objet testé.
Mes questions sont les suivantes : est-il possible pour moi de remplacer le nom de la table générée lors de l'import (par exemple, en ce moment si j'importe 8 fichiers, les tables générées dans JMP sont "cycle" "cycle 2", "cycle 3" etc .) pour être les titres des classeurs Excel originaux (devenant dans cet exemple, "classeur 1", "classeur 2", "classeur 3" etc.) ?
Ma prochaine question concerne la concaténation. Est-il possible pour moi d'écrire un script capable d'analyser une cellule spécifique (par exemple, celui généré par votre script, qui copie le titre du classeur dans une colonne spécifique lors de l'importation), puis d'utiliser la valeur contenue dans cette cellule pour ajouter les informations dans les colonnes restantes vers une table JMP existante ?
Pour clarifier, imaginons que je teste un objet, en l'occurrence étiqueté "A71320". J'ai une table de données JMP également appelée "A71320", qui est une compilation de toutes mes données pertinentes pour cet objet de test. Chaque nouveau test génère un fichier Excel, également intitulé « A71320 ». Je souhaite importer ce fichier à l'aide de votre script. Si je comprends bien, il copiera alors toutes les données de la feuille 4, "cycle", créera une nouvelle table JMP, intitulée "cycle", puis au sein de cette nouvelle table, créera une nouvelle colonne avec 1 cellule remplie, "A71320". . Je voudrais ensuite exécuter un script qui verra cette cellule "A71320", reconnaîtra une table existante dans JMP appelée "A71320" et ajoutera toutes les informations à l'exception de la cellule titulaire, de "cycle" à "A71320". Est-ce possible?
Mes plus sincères remerciements d'avoir pris le temps de lire cette question.
Antilope
Personnalisation de masseles fenêtresRe : Besoin d'aide pour importer Excel, une feuille de calcul spécifique avec le titre du classeur pour la concaténation avec la table existanteVoici un script qui devrait vous donner un bon départ pour écrire votre propre script pour terminer votre tâche.Assurez-vous d'étudier le script fourni afin de comprendre son fonctionnement.
Names Default To Here( 1 );
// Set the object in question
object = "A71322";
// Get a list of input xls files to proces
// I am using the method where all files to be processed are moved into a single directory
dir = "C:\users\xxxx\input files\";
theFiles = Files In Directory( dir );
// Create the start of the final data table
dt = New Table( "Combined",
New Column( "Run",
formula(
If(
Row() == 1, 1,
:Cycle ID == 1 & Lag( :Cycle ID ) != 1, Lag( :Run ) + 1,
Lag( :Run )
)
)
),
New Column( "Total Cycle Number", formula( Row() ) )
);
// Loop through all of the file names and select only object in question files
For( i = 1, i <= N Items( theFiles ), i++,
If( Contains( theFiles[i], object ) == 1,
dtCycle = Open(
Char( dir ) || theFiles[i],
Worksheets( "cycle" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
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( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
dt = dt << concatenate( dtCycle, Append to first table( 1 ) );
// Clean up
Close( dtCycle, nosave );
)
);Re : Besoin d'aide pour importer Excel, une feuille de calcul spécifique avec le titre du classeur pour la concaténation avec la table existanteSalut @txnelson ,
Je t'entends! Veuillez regarder la pièce jointe. Comme décrit ci-dessus, je génère fréquemment de "nouveaux" fichiers A71322.xls. Chaque instance du fichier est unique (j'ai une structure de système de fichiers pour les stocker/différencier) et chacune correspond à un "Run" comme décrit dans le tableau .jmp. J'ouvre généralement le fichier Excel manuellement, puis copie toutes les données sous les en-têtes de colonne dans la feuille de calcul "cycle", puis les colle dans la table .jmp sous la dernière entrée de la colonne "ID de cycle". Les formules pour "Nombre total de cycles" et "Exécution" génèrent des entrées correctes dans le tableau de données.
Jusqu'à présent, j'ai pu recréer ce qui précède en important les livres Excel, feuille de cycle uniquement, puis en utilisant la fonction de concaténation de base. Cependant, il est actuellement lent et le fait que seul le nom de la feuille soit importé (c'est-à-dire l'importation de 4 classeurs conduit à "cycle" "cycle 1" "cycle 2" et "cycle 3") parfois déroutant. Il est plus rapide pour moi de continuer manuellement comme je l'ai fait.
Cependant, mes ensembles de données ne cessent de croître et je recherche donc une solution de script. J'effectue des tests pour plusieurs batteries (par exemple, A71321, A71311, etc.) et je suis convaincu que je pourrai adapter la solution que vous proposez.
Encore une chose à noter, le titre de la cellule se trouve dans la feuille "test", cellule I-6 si cela est utile (cependant, ce n'est pas aussi flexible que de pouvoir importer le titre du classeur dans mon scénario. ).
Encore une fois, votre patience avec la lecture de ma demande et toute réponse à venir sont toutes deux appréciées. Si vous avez besoin de plus d'informations, je serai à votre disposition pour vous répondre.
Salutations,
Antilope
Re : Besoin d'aide pour importer Excel, une feuille de calcul spécifique avec le titre du classeur pour la concaténation avec la table existanteCela ne semble pas être une tâche difficile. Cependant, les détails spécifiques sont trop ambigus pour tenter d'écrire un script répondant à vos besoins.Des échantillons de vos classeurs Excel d'entrée et des tableaux de données finaux seraient vraiment utiles pour tenter de vous guider dans le développement d'un script.