Ich stelle einen Code zusammen, in dem ich versuche, die zu öffnenden Dateien zu durchlaufen und die Datei am Ende der Datei für eine Tabelle hinzuzufügen. Wenn man also drei Dateien öffnet, wird es grundsätzlich an das Ende der ersten Datei für die Tabelle angehängt, aber ich habe zwei Probleme, möchte hier aber nur auf das eine eingehen.
Ich füge dem Pfad der Ausgabetabelle eine Spalte hinzu, damit ich den Überblick behalten kann, wohin sie geht. Hier ist also der Code, in dem es funktioniert, wenn nitems(selected_files) = 1, aber wenn es größer als 1 ist, ist das Ergebnis leer. Was mache ich falsch? Hier ist der Code:
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;Wenn Sie diesen Code ausführen, werden Sie sehen, dass bei einer ausgewählten Datei das zu tun scheint, was ich suche, bei zwei oder mehr jedoch nicht. Jede Hilfe wäre sehr dankbar!
Großartig, das macht genau das, was ich wollte, vielen Dank, das hat mich zum Staunen gebracht!
Das Problem besteht darin, dass Sie die beiden Spalten auf Formeln festlegen, die die Variablen selected_files[i] und file_name[i] verwenden. Wenn Sie also mit dem Skript fortfahren, ändern sich diese Werte jedes Mal, wenn ich sie ändere. Anstatt eine Formel zu verwenden, legen Sie die Werte direkt auf die gewünschten Werte fest. Da Sie außerdem Zeichenwerte in diese beiden Spalten einfügen, empfehle ich, sie als Zeichenspalten statt als numerische Spalten zu erstellen. Ändern Sie stattdessen die beiden Zeilen „Neue Spalte“ in diese, und ich denke, Sie erhalten, was Sie suchen:
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]));