我正在整理一些代碼,嘗試循環打開文件並將文件添加到表的文件末尾。 因此,如果打開三個文件基本上會將其附加到表的第一個文件的末尾,但我有兩個問題,但這裡只討論一個。
我在輸出表路徑中添加了一列,這樣我就可以跟踪它的去向。 所以這裡是代碼,如果 nitems(selected_files) = 1,它就可以工作,但是如果它大於 1,結果就是空白,我做錯了什麼? 這是代碼:
default_directory = "C:";
// Open Dialog box to select input files
selected_files = Pick File("Select Input File",default_directory,{"Excel Files|xls;xlsx","All Files|*"},1,0,"",multiple);
file_name = selected_files;
all_data_table = Empty();
For(i=1, i <= nitems(selected_files), i++,
num = Char(i);
file_name[i] = Concat Items({"File",num});
out_here = Open(
selected_files[i],
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Invisible,
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 2 ),
Data Starts on Row( 3 ),
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( 0 ),
Suppress Hidden Columns( 0 ),
Suppress Empty Columns( 0 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
out_here << New Column("Path",Numeric,"Continuous",Formula(selected_files[i]));
out_here << New Column("File",Numeric,"Continuous",Formula(file_name[i]));
If( Is Empty( all_data_table ),
all_data_table = out_here;
,
all_data_table << Concatenate( out_here, Append to first table );
);
);
all_data_table << New Data View;如果您運行此代碼,您將看到選定的一個文件似乎可以滿足我的要求,但有 2 個或更多文件則不能。 任何幫助將不勝感激!
太棒了,這完全符合我的要求,非常感謝,這讓我很頭疼!
問題是您將兩列設置為使用變量 selected_files[i] 和 file_name[i] 的公式。 因此,當您繼續執行腳本時,每次 i 更改時,這些值都會更改。 不使用公式,而是直接將值設置為您想要的值。 另外,由於您將字符值放入這兩列中,因此我建議將它們創建為字符列而不是數字列。 將兩條新列行更改為此,我想您會得到您正在尋找的內容:
out_here << New Column("Path","Character","Nominal",Set Each Value(selected_files[i]));
out_here << New Column("File","Character","Nominal",Set Each Value(file_name[i]));