So importieren Sie mehrere PDF-Dateien in eine DatentabelleWarnung: Ich bin neu in der Skripterstellung
Herausforderung :
- Ich habe etwa 500 PDF-Dateien, von denen jede eine Datentabelle enthält, die ich in JMP importieren und in einer einzigen JMP-Datentabelle zusammenfassen möchte.
Arbeitsablauf und Probleme :
- Ich habe ein Skript erstellt (siehe unten), mit dem ich die tabellarischen Daten aus einem PDF importieren und an eine von mir aufgerufene Tabelle anhängen kann Final.jmp . Ich habe das Skript als separate Datei gespeichert, also nicht in einer Datentabelle. Jedem PDF ist ein Anhang beigefügt Final.jmp als einzelne Zeile.
- Nach jedem Import muss ich das schließen Final.jmp Tabelle und überschreiben Sie sie mit der neuen, aktualisierten „endgültigen“ Tabelle, die die zusätzliche Zeile aus dem neu importierten PDF enthält.
- Nach jedem Import muss ich außerdem alle dabei entstehenden Zwischentabellen manuell schließen. (langweilig)
- Dann ändere ich den Namen der PDF-Datei im Skript, drücke auf „Speichern“ und führe es erneut aus, um ein weiteres PDF zu importieren. Und so gehen die Zyklen weiter.
- Dieser Vorgang ist schneller als das manuelle Einfügen von Kopien, aber immer noch mühsam und mit an Sicherheit grenzender Wahrscheinlichkeit nicht in dem für die Informatik typischen Ausmaß automatisiert.
Frage :
- Ist es möglich, ein Skript wiederholt auszuführen, wobei jedes Mal ein neues PDF zum Importieren ausgewählt und an dieselbe Tabelle angehängt wird, bis alle PDFs in einem Ordner importiert wurden?
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" ) )
DatenzugriffBetreff: So importieren Sie mehrere PDF-Dateien in eine DatentabelleMein Fehler........
Data table( "Final" );
hätte angegeben werden sollen
New Table( "Final" );
Betreff: So importieren Sie mehrere PDF-Dateien in eine DatentabelleTut mir leid, ich muss mit noch mehr Fragen zurückkommen, denn irgendwie schaffe ich es trotz jahrelanger akademischer Ausbildung nicht, diese Schleife zum Laufen zu bringen. Folgendes habe ich versucht, damit es funktioniert: Zuerst habe ich alle Dateien auf meine lokale Festplatte verschoben, weil wir aus irgendeinem Grund „()“ in einigen unserer Ordnernamen auf dem Server verwenden und ich den Eindruck hatte, dass dies ein Problem verursachte . Schließlich habe ich das gesamte Verzeichnis im Skript mit Anführungszeichen „in Anführungszeichen gesetzt“, was das Skript anscheinend davon überzeugte, bis zur nächsten Fehlermeldung ausgeführt zu werden. Dann sagte es mir etwas über „Pfad ist ungültig ... ‚Kleber‘ ...“. Ich habe es gegoogelt, habe aber keine Ahnung, wie ich dieses Problem angehen soll. Ich sehe, dass der Dateiname in der Fehlermeldung der Name einer der Dateien in dem Verzeichnis ist, mit dem ich arbeiten möchte. Zuerst dachte ich, dass der Bindestrich im Dateinamen ein Problem verursacht, aber selbst wenn ich das ändere, tritt der Fehler auf.
Ich habe unten eingefügt:
- Eine Kopie des Skripts mit einem gefälschten Verzeichnisnamen. Ich habe die Anzahl der Ordner sowie den Ordnernamen mit Klammern beibehalten.
- Die Fehlermeldung aus dem Skriptfenster
- Die Fehlermeldung vom Debuggen
Wie füge ich außerdem das Verzeichnis UND den Dateinamen in die endgültige Datentabelle ein?
Vielen Dank im Voraus! (Wenn Sie das zu trivial finden, um es zu beantworten, werde ich es verstehen.)


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 );
);
Betreff: So importieren Sie mehrere PDF-Dateien in eine Datentabelle@txnelson Ich weiß nicht, wie ich meine Dankbarkeit angemessen ausdrücken soll. Du bist sehr, sehr nett. Nochmals vielen Dank für Ihre Hilfe!
Betreff: So importieren Sie mehrere PDF-Dateien in eine DatentabelleAlles, was Sie tun müssen, ist, den Code in einer Schleife zu durchlaufen, eine Datei nach der anderen einzulesen und sie der endgültigen Datentabelle hinzuzufügen.Die folgende JSL soll Ihnen einen guten Einstieg in die Vorgehensweise bieten.
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>