Comment importer plusieurs fichiers PDF dans un tableau de donnéesAttention : je suis nouveau dans les scripts
Défi :
- J'ai environ 500 fichiers PDF, chacun contenant une table de données que je souhaite importer dans JMP et rassembler en une seule table de données JMP.
Flux de travail et problèmes :
- J'ai créé un script (voir ci-dessous) qui me permet d'importer les données tabulées d'un pdf et de les ajouter à un tableau que j'ai appelé Final.jmp . J'ai conservé le script dans un fichier séparé, c'est-à-dire pas dans une table de données. Chaque pdf est annexé à Final.jmp comme une seule rangée.
- Après chaque import, je dois fermer le Final.jmp tableau et écrasez-le par le nouveau tableau "final" mis à jour qui contient la ligne supplémentaire du pdf nouvellement importé.
- Après chaque importation, je dois également fermer manuellement toutes les tables intermédiaires créées au cours du processus. (ennuyeux)
- Ensuite, je change le nom du fichier pdf dans le script, j'appuie sur Enregistrer et je le réexécute pour importer encore un autre pdf. Et ainsi les cycles continuent.
- Ce processus est plus rapide que le copier-coller manuel, mais reste laborieux et, avec une quasi-certitude, il n'est pas automatisé à un degré typique de l'informatique.
Question :
- Est-il possible d'exécuter un script de manière répétitive, en sélectionnant à chaque fois un nouveau fichier PDF à importer et en l'ajoutant au même tableau jusqu'à ce que tous les fichiers PDF d'un dossier aient été importés ?
Open(
"C:\example folder\example.pdf",
PDF Tables(
Table(
table name( "1" ),
add rows( page( 1 ), Rect( 2.0419, 0.9776, 3.1993, 1.1726 ) ),
add rows( page( 1 ), Rect( 1.2137, 3.7819, 6.3603, 3.9069 ) ),
add rows( page( 1 ), Rect( 0.8717, 3.9636, 3.0796, 4.0886 ) ),
add rows(
page( 1 ),
Rect( 0.9853, 4.1436, 3.0029, 4.2686 ),
column borders( 0.9853, 2.5416, 3.0029 )
),
add rows( page( 1 ), Rect( 4.581, 4.1436, 7.297, 4.2686 ) ),
add rows(
page( 1 ),
Rect( 0.8883, 4.4136, 4.6374, 4.5386 ),
column borders( 0.8883, 1.9603, 4.6374 )
),
add rows(
page( 1 ),
Rect( 6.0143, 4.6569, 7.2498, 4.7819 ),
column borders( 6.0143, 6.5817, 7.2498 )
),
add rows( page( 1 ), Rect( 0.7556, 4.7979, 7.5908, 8.2654 ) )
)
)
);
Data Table( "1" ) << Stack(
columns( :Column 3, :Column 4, :Column 5, :Column 6 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output table("2")
);
Data Table( "2" ) << Transpose(
columns( :Data ),
Output Table( "3" )
);
Data Table( "Final" ) << Concatenate( Data Table( "3" ) )
Accès aux donnéesRe : Comment importer plusieurs fichiers PDF dans une table de donnéesMon erreur........
Data table( "Final" );
aurait dû être précisé
New Table( "Final" );
Re : Comment importer plusieurs fichiers PDF dans une table de donnéesDésolé, je dois revenir avec encore plus de questions car, d'une manière ou d'une autre, malgré des années de formation académique, je n'arrive pas à faire fonctionner cette boucle. Voici ce que j'ai essayé de faire fonctionner : J'ai d'abord déplacé tous les fichiers sur mon disque dur local, car pour une raison quelconque, nous utilisons "()" dans certains de nos noms de dossiers sur le serveur et j'ai eu l'impression que cela créait un problème. . Finalement, j'ai "cité" l'intégralité du répertoire dans le script en utilisant des guillemets, ce qui a semblé convaincre le script de s'exécuter jusqu'au prochain message d'erreur. Ensuite, il m'a dit quelque chose à propos de "Le chemin n'est pas valide... 'Colle'...". Je l'ai recherché sur Google, mais je ne sais pas comment résoudre ce problème. Je peux voir que le nom de fichier dans le message d'erreur est le nom de l'un des fichiers du répertoire avec lequel je souhaite travailler. Au début, je pensais que le trait d'union dans le nom du fichier créait un problème, mais même en le modifiant, l'erreur se produit.
J'ai collé ci-dessous :
- Une copie du script avec un faux nom de répertoire. J'ai conservé le nombre de dossiers ainsi que le nom du dossier contenant des parenthèses.
- Le message d'erreur de la fenêtre de script
- Le message d'erreur du débogage
De plus, comment inclure le répertoire ET le nom de fichier dans la table de données finale ?
Merci beaucoup d'avance! (Si vous trouvez cette question trop triviale pour répondre, je comprendrai.)


Names default to here(1);
// Here is an example where the first thing that is done, is to create
// the list of the files to be processed
// Many different methods can be used to do this, but for this example
// the file names are read in from a directory
theFilesList = Files in directory( "C:\directory1\subdirectory1\subdirectory2\subdirectory3 (nameof aperson)\subdirectory4\subdirectory5\subdirectory6\subdirectory7\subdirectory8\subdirectory9\subdirectory10" );
// Create the Final data table that will have all of the processed files
// concatenated to it
Data Table( "Final" );
// Loop across all of the files and read them in one at a time and add them
// to the Final data table
For( i = 1, i <= N Items( theFilesList ), i++,
Open(
theFilesList[i],
PDF Tables(
Table(
table name( "1" ),
add rows( page( 1 ), Rect( 2.0419, 0.9776, 3.1993, 1.1726 ) ),
add rows( page( 1 ), Rect( 1.2137, 3.7819, 6.3603, 3.9069 ) ),
add rows( page( 1 ), Rect( 0.8717, 3.9636, 3.0796, 4.0886 ) ),
add rows( page( 1 ), Rect( 0.9853, 4.1436, 3.0029, 4.2686 ), column borders( 0.9853, 2.5416, 3.0029 ) ),
add rows( page( 1 ), Rect( 4.581, 4.1436, 7.297, 4.2686 ) ),
add rows( page( 1 ), Rect( 0.8883, 4.4136, 4.6374, 4.5386 ), column borders( 0.8883, 1.9603, 4.6374 ) ),
add rows( page( 1 ), Rect( 6.0143, 4.6569, 7.2498, 4.7819 ), column borders( 6.0143, 6.5817, 7.2498 ) ),
add rows( page( 1 ), Rect( 0.7556, 4.7979, 7.5908, 8.2654 ) )
)
)
);
Data Table( "1" ) << Stack(
columns( :Column 3, :Column 4, :Column 5, :Column 6 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output table( "2" )
);
Data Table( "2" ) << Transpose( columns( :Data ), Output Table( "3" ) );
// Concatenate the processed data to the Final data table
Data Table( "Final" ) << Concatenate( Data Table( "3" ), Append to first table( 1 ) );
// Cleanup the environment
Close( Data Table( "1" ), nosave );
Close( Data Table( "2" ), nosave );
Close( Data Table( "3" ), nosave );
);
Re : Comment importer plusieurs fichiers PDF dans une table de données@txnelson , je ne sais pas comment exprimer adéquatement ma gratitude. Vous êtes très, très gentil. Merci beaucoup pour votre aide encore !
Re : Comment importer plusieurs fichiers PDF dans une table de donnéesTout ce qui doit être fait est simplement de parcourir le code en boucle, en lisant un fichier après l'autre et en l'ajoutant à la table de données finale.Le JSL ci-dessous devrait vous fournir un bon début sur la façon de procéder.
Names default to here(1);
// Here is an example where the first thing that is done, is to create
// the list of the files to be processed
// Many different methods can be used to do this, but for this example
// the file names are read in from a directory
theFilesList = Files in directory( <PATH to="" your="" folder="" that="" has="" the="" .pdf="" files=""> );
// Create the Final data table that will have all of the processed files
// concatenated to it
Data Table( "Final" );
// Loop across all of the files and read them in one at a time and add them
// to the Final data table
For( i = 1, i <= N Items( theFilesList ), i++,
Open(
theFilesList[i],
PDF Tables(
Table(
table name( "1" ),
add rows( page( 1 ), Rect( 2.0419, 0.9776, 3.1993, 1.1726 ) ),
add rows( page( 1 ), Rect( 1.2137, 3.7819, 6.3603, 3.9069 ) ),
add rows( page( 1 ), Rect( 0.8717, 3.9636, 3.0796, 4.0886 ) ),
add rows( page( 1 ), Rect( 0.9853, 4.1436, 3.0029, 4.2686 ), column borders( 0.9853, 2.5416, 3.0029 ) ),
add rows( page( 1 ), Rect( 4.581, 4.1436, 7.297, 4.2686 ) ),
add rows( page( 1 ), Rect( 0.8883, 4.4136, 4.6374, 4.5386 ), column borders( 0.8883, 1.9603, 4.6374 ) ),
add rows( page( 1 ), Rect( 6.0143, 4.6569, 7.2498, 4.7819 ), column borders( 6.0143, 6.5817, 7.2498 ) ),
add rows( page( 1 ), Rect( 0.7556, 4.7979, 7.5908, 8.2654 ) )
)
)
);
Data Table( "1" ) << Stack(
columns( :Column 3, :Column 4, :Column 5, :Column 6 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output table( "2" )
);
Data Table( "2" ) << Transpose( columns( :Data ), Output Table( "3" ) );
// Concatenate the processed data to the Final data table
Data Table( "Final" ) << Concatenate( Data Table( "3" ), Append to first table( 1 ) );
// Cleanup the environment
Close( Data Table( "1" ), nosave );
Close( Data Table( "2" ), nosave );
Close( Data Table( "3" ), nosave );
);</PATH>