Combinez les données de différents classeurs au format pileBonjour les experts JMP,
Je recherche une option pour regrouper les données de différents classeurs Excel dans un seul fichier JMP en les empilant sous un seul en-tête.
Veuillez suggérer la meilleure option pour importer les données de plusieurs classeurs [N'oubliez pas qu'il ne s'agit pas d'une feuille de calcul]
Au fait, j'utilise JMP 15 pro, sous Mac OS.
Merci d'avance.
Re : Combiner les données de différents classeurs au format pileIl semble que la définition de la liste "theFiles" soit incorrecte ou inexistante.Quelle est la valeur des Fichiers et quelle est la valeur de la variable i ?
Re : Combiner les données de différents classeurs au format pileJ'ai essayé ce script et j'ai obtenu l'erreur suivante. Je ne suis pas sûr de ce qui s'est passé, je me demande si vous pourriez m'aider. Merci.

Re : Combiner les données de différents classeurs au format pile- Le script que j'ai fourni est basé sur une liste JSL de classeurs à lire.Cette liste s'appelle les Fichiers.Dans mon script, il est créé en lisant tous les fichiers .xlsx d'une structure répertoire/dossier donnée.Mais vous pouvez modifier cela et créer simplement cette liste manuellement.
theFiles = {"complete path to workbook 1", "complete path to workbook 2"
"complete path to workbook 3" };Un exemple inventé de ce que pourrait être le « chemin complet vers le classeur n » est :"C:\Excel Data\2020\January\Department21 Monthly.xlsx"
Vous pouvez donc simplement supprimer le code des lignes 3 à 11 et le remplacer par votre nouvelle définition de la liste "theFiles", et le script devrait vous donner les résultats que vous demandez.
- Le script lira déjà toutes les feuilles de calcul de n'importe quel classeur qu'il ouvre et les placera dans une seule table de données JMP, que le script ajoutera ensuite à la table de données finale globale que le script est en train de créer.
- Vous devez développer vos compétences JMP JSL afin de pouvoir assumer la responsabilité de l'utilisation et de la maintenance du script.Ou si cela ne correspond pas à la définition de votre travail, vous devez alors trouver le budget nécessaire pour embaucher quelqu'un pour soutenir le code.Utiliser des scripts qui viennent de vous être transmis est une chose très interrogative.JMP fournit gratuitement de la documentation, des exemples et des tutoriels sur l'apprentissage du JSL.De plus, ils proposent des cours de formation « payants » sur JSL.Les participants à la discussion communautaire JMP sont là pour vous aider à résoudre les problèmes, mais ce serait une mauvaise décision de supposer qu'ils seront capables d'écrire les scripts finalisés dont vous pourriez avoir besoin.
- Vous trouverez ci-dessous une modification de mon script original, en y plaçant un exemple de code permettant de saisir manuellement les chemins d'accès aux classeurs que vous souhaitez lire.
Names Default To Here( 1 );
theFiles = {"complete path to workbook 1", "complete path to workbook 2"
"complete path to workbook 3" };
// create the base data table that all other tables will be concatenated to
dtFinal = New Table( "All Data" );
// loop through all .xlsx files and concatenate them to dtFinal
// the Concatenate Worksheets(1) will result in a single data table
// for each workbook read in and that single data table will be concatenated
// to the dtFinal
For( i = 1, i <= N Items( theFiles ), i++,
dt = Open(
theFiles[i],
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ),
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( "-" )
)
);
// concatenate the new table with the dtFinal table
dtFinal << concatenate( dt, append to first table( 1 ) );
// delete the no longer needed data table dt
Close( dt, nosave );
);Re : Combiner les données de différents classeurs au format pileMerci pour la réponse rapide, txnelson.
Mais honnêtement, je ne suis pas doué pour éditer les scripts .jsl. Je ne sais pas quelles sont toutes les étapes que je dois modifier dans le script jsl partagé ci-dessus.
En ce moment, j'ai "n" non. de types similaires de classeurs Excel dans un seul dossier. Chaque classeur Excel comporte plusieurs feuilles, mais mon objectif est de regrouper les informations de la feuille de calcul nommée « Données » de tous les classeurs.
en supposant ce scénario, pouvez-vous s'il vous plaît me guider davantage pour modifier le script donné.?
De plus, si vous avez une idée sur l'assistant « Importation de fichiers multiples », veuillez le suggérer pour le scénario donné. Je peux regrouper les données de plusieurs classeurs, si les classeurs individuels n'ont qu'une seule feuille de calcul. Mais je ne sais pas quelle est la bonne étape à suivre pour le scénario que j'ai donné ici [c.-à-d. si chaque classeur a plusieurs feuilles de calcul.]Re : Combiner les données de différents classeurs au format pileVous trouverez ci-dessous un exemple qui devrait vous donner une idée de la manière d'aborder ce problème.Vous devrez probablement y apporter des modifications en fonction des détails de vos structures réelles.
Names Default To Here( 1 );
// get the workbooks to be processed
theFiles = Files in Directory(<YOUR path="">, recursive(1) );
// reduce the list to only .xlsx entries
For( i = N Items( theFiles ), i >= 1, i--,
If( Word( -1, theFiles[i], "." ) != "xlsx",
Remove From( theFiles, i, 1 )
)
);
// create the base data table that all other tables will be concatenated to
dtFinal = New Table( "All Data" );
// loop through all .xlsx files and concatenate them to dtFinal
// the Concatenate Worksheets(1) will result in a single data table
// for each workbook read in and that single data table will be concatenated
// to the dtFinal
For( i = 1, i <= N Items( theFiles ), i++,
dt = Open(
theFiles[i],
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ),
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( "-" )
)
);
// concatenate the new table with the dtFinal table
dtFinal << concatenate( dt, append to first table( 1 ) );
// delete the no longer needed data table dt
Close( dt, nosave );
);</YOUR>