嗨,
我試圖一次執行一系列嵌套for循環,以便每次外部for循環運行時內部for循環發生一次。
為了給出更多的上下文,我有一個長達58頁的PDF文件。每兩頁都是一個單獨的文檔,我想分開並打開一個新表來使用文本導入嚮導(所以29個文檔在一個PDF中一起打印)。我還希望列名從第32行開始,數據從每兩頁文檔的第33行開始。
為此,我在文本嚮導腳本中的Column Names Start和Data Start嵌套了for循環。在29個文檔中的每一個上的列名稱之間有134行,並且隨後在29頁,2頁長文檔中的每一個上開始134行。
整個腳本周圍還有一個for循環,用於打開主文件29次,後續的for循環選擇要啟動哪一行,並為文件中的每個文檔創建一個表。
我如何使用Break或Continue命令讓腳本執行第一個for循環,進入下一個for循環並讓它執行一次,然後繼續執行每個for循環的腳本只執行一次,然後再重新開始該文件並進行for循環的下一次迭代?同時還有每個for循環記住過去的迭代,以保持行數應該在哪裡。
謝謝,
馬特
//opens text file using text wizard
for(i=1, i<=29, i++,
Open(
"C:\Users\file.txt",
columns(
New Column( "Parameters", Character, "Nominal" ),
New Column( "Results", Character, "Nominal" ),
New Column( "Units", Character, "Nominal" ),
New Column( "Uncertainty", Character, "Nominal" ),
New Column( "Spec", Character, "Nominal" ),
New Column( "Methods", Character, "Nominal" ),
New Column( "c000007", Character, "Nominal" ),
New Column( "c000008", Character, "Nominal" ),
New Column( "c000009", Character, "Nominal" ),
New Column( "c0000010", Character, "Nominal" ),
New Column( "c0000011", Character, "Nominal" ),
New Column( "c0000012", Character, "Nominal" ),
New Column( "c0000013", Character, "Nominal" ),
New Column( "c0000014", Character, "Nominal" ),
New Column( "c0000015", Character, "Nominal" ),
New Column( "c0000016", Character, "Nominal" ),
New Column( "c0000017", Character, "Nominal" ),
New Column( "c0000018", Numeric, "Continuous", Format( "Best", 10 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Space, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start(
for(q=1, q<=29, q++,
(32*q)+for(p=135, p<29, p++,
(show(p));
);
);
),
Data Starts(
for(t=1, t<=29, t++,
(33*t)+for(s=135, s<29, s++,
(show(s));
);
);
),
Lines To Read( "135" ),
Year Rule( "20xx" )
)
));嘗試這樣的事情
filename = Save Text File( "$temp\x.csv", "a,b,c
1,2,3
a,b,c
2,3,4
a,b,c
3,4,5
" );
dtlist = {};
For( i = 1, i <= 3, i += 1,
names = (i - 1) * 2 + 1;
data = names + 1;
dtlist[i] = Open(
filename,
columnNamesStart( names ),
DataStarts( data ),
Lines To Read( 1 )
);
dtlist[i] << setname( "segment" || Char( i ) );
);
名稱由JSL設置的三個表
@MattP ,
我試著查看你的代碼,這裡有一些我注意到的事情:

突出顯示的部分對我來說並沒有多大意義。如果你願意嘗試,我會推荐一種不同的方法。運行for循環,讓它將所有數據讀入數據表。雖然讀取比必要數據更多的數據可能是違反直覺的,但我認為從代碼的效率和清晰度來看,對後處理數據進行後處理會更容易,而不是試圖限制所發生的數據。。因此,保持外部循環並刪除“列”和“數據”部分中的內部循環。獲得數據後,讓我們採用示例數據表,看看如何過濾出您想要的數據。給它一個機會,並提供任何幫助。