ファイルを開いてテーブルのファイルの末尾にファイルを追加することをループするコードをまとめています。 したがって、3つのファイルを開くと、基本的にはテーブルの最初のファイルの最後に追加されますが、2つの問題がありますが、ここでは1つだけについて説明します。
出力テーブルパスに列を追加するので、列がどこに行くのかを追跡することができます。 それで、これが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;このコードを実行すると、1つのファイルを選択した状態で、私が探していることを実行しているように見えますが、2つ以上は実行されません。 任意の助けは大歓迎です!
素晴らしい、これは私が望んでいたことを全体的に実行します。ありがとうございます。
問題は、変数selected_files [i]とfile_name [i]を使用する式に2つの列を設定していることです。それで、あなたがスクリプトを通して続けるとき、それらの値は私が変わるたびに変わる。式を使用する代わりに、値を必要な値に直接設定します。また、これら2つの列に文字値を配置しているので、数値列ではなく文字列として作成することをお勧めします。2つのNew Column行を代わりにこれに変更してください。そうすればあなたが探しているものが手に入るでしょう:
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]));