如何將多個 PDF 檔案中的資料匯入到一張表中,並按 PDF 檔案名稱標記?你好呀,
我有一個包含 100 多個 PDF 的資料夾,全部以一致的格式排列。 每個 PDF 的檔案名稱代表我想要使用的批號,並且在每個 PDF 中都有一個我想要提取的特定資料表。
我的目標是為每個 PDF 提取相同的資料表,然後連接所有提取的資料表,並按 PDF 檔案名稱(批號)標記。 最後,我想拆分串聯表中的列,並按 PDF 文件名稱對其進行分組,最終得到最終表。
我嘗試過手動執行此操作,並且可以獲得我需要的最終表格,但這非常耗時,因為我必須單獨開啟並選擇每個 PDF 中的表格。
因此,我想知道是否有一些 JSL 可以幫助解決這個問題?
我對腳本編寫非常陌生,但已經能夠創建一個腳本,為我提供前兩個 PDF 文件所需的內容:
//Opening up the first two files (Batch Number 1 & Batch Number 2) from the folder
Open(
"C:\Example folder\Batch 1.pdf",
PDF Tables(
Table(
table name( "Batch 1" ),
add rows( page( 1 ), Rect( 0.4143, 5.3995, 7.5889, 6.6781 ) )
)
)
)
;
Open(
"C:\Example folder\Batch 2.pdf",
PDF Tables(
Table(
table name( "Batch 2" ),
add rows( page( 1 ), Rect( 0.4143, 5.3995, 7.5889, 6.6781 ) )
)
)
)
;
//Concatenating the data for the first 2 batches into one table and adding a source column:
Data Table( "Batch 1" ) << Concatenate(
Data Table( "Batch 2" ),
Create source column,
Output table("Concat")
)
;
//Splitting by the concatenated table by the Characteristic column and grouping by source column (batch number) to create a Final table:
Data Table( "Concat" ) << Split(
Split By( :Characteristic ),
Split( :Value ),
Group( :Source Table ),
Remaining Columns( Drop All ),
Sort by Column Property,
Output table("Final")
)
;
//Close all other tables
Close("Batch 1", no save)
;
Close("Batch 2", no save)
;
Close("Concat", no save)我需要調整此腳本以開啟所有 PDF 檔案(不僅僅是前兩個)以建立最終資料表,並用 PDF 檔案名稱標記。
有人可以幫我嗎?
非常感謝,
艾莉西亞
資料混合與清理回覆:如何將多個 PDF 文件中的資料匯入到一張表中,並按 PDF 文件名稱標記?非常感謝@Craige_Hales和@喬治您的幫助。 我會嘗試一下,看看是否可以改編劇本。 非常感謝!
回覆:如何將多個 PDF 文件中的資料匯入到一張表中,並按 PDF 文件名稱標記?以下是包含您需要的步驟的範例。 的貼文@Craige_Hales有助於理解這些東西是如何運作的。
Names Default To Here( 1 );
// Prepare a directory
tempdir = "$TEMP\pdf_test";
If( !Directory Exists( tempdir ),
Create Directory( tempdir ),
file_lst = Files In Directory( tempdir );
For( i = 1, i <= N Items( file_lst ), i++,
Delete File( tempdir || "/" || file_lst[i] )
);
);
// Open sample Table
cdt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Prepare PDF's
For( i = 1, i <= 10, i++,
jrn = cdt << Journal;
jrn << save pdf( tempdir || "/" || Char( i ) || "_Big Class.pdf" );
jrn << close window;
);
// Read PDF's
file_lst = Files In Directory( tempdir );
table_lst = {};
For( i = 1, i <= N Items( file_lst ), i++,
Insert Into( table_lst, Open( tempdir || "/" || file_lst[i], PDF All Tables() ) )
);
// Concat PDF's
If( N Items( table_lst ) > 1,
result_table = table_lst[1] << concatenate( table_lst[2 :: N Items( table_lst )], Output Table( "ResultTable" ), Create Source Column )
);
// Close single PDF's
For( i = 1, i <= N Items( table_lst ), i++,
Close( table_lst[i], noSave )
);
split_table = result_table << Split(
Split By( :sex ),
Group( :Source Table ),
Split( :age ),
Remaining Columns( Drop All ),
Sort by Column Property, output table("Split_Result")
);回覆:如何將多個 PDF 文件中的資料匯入到一張表中,並按 PDF 文件名稱標記?如果你有兩個工作,代碼在連接資料表可能會帶你到那裡。 FilesInDirectory() 可能是您需要的函數。
類似的例子還有很多;在目錄中搜尋檔案可能會找到它們。
如果這不能讓您到達目的地,請再次詢問,我認為您已經很接近了。