Wenn Sie verwenden, können Sie mit der optionalen Anweisung einschränken, welcher Teil der Datei gelesen wird. Aber Sie müssen den Bereich im Format "Blattname $ start: end" angeben, daher müssen Sie den Namen des Blattes in der XLSX-Datei kennen, die Sie lesen möchten.
Sie können die XLSX-Libname-Engine verwenden, um die Namen der Blätter in der XLSX-Datei abzurufen.
libname in xlsx "&filename" ;
proc contents data=in._all_ noprint out=contents; run;
Dadurch können Sie auch wissen, wie viele Spalten es gibt.
proc sql noprint ;
select memname,max(varnum) into :sheetname trimmed,:ncols trimmed
from contents group by 1 ;
quit;
Um herauszufinden, wie viele Zeilen vorhanden sind, müssen Sie die Daten lesen.
data _null_;
if eof then call symputx('nrows',_n_);
set in.&sheetname end=eof;
run;
Mit diesen Informationen könnten Sie dann die Option RANGE = für Sie PROC IMPORT erstellen.
Hinweis dass Sie die Anzahl der Spalten in die XLSX-Spaltennotation (A, ..., Z, AA, ..., AZ) umwandeln müssen. Wenn Ihr Blatt also 26 Spalten hat, dann ist die letzte Spalte die Spalte Z und die letzten zwei würden Sie durch die Spalte X lesen.
Nehmen wir an, Sie haben %eval(&ncols-2)
in die entsprechende Spaltenbeschriftung übersetzt und das Ergebnis im Makro gespeichert Variable LASTCOL.
So Ihre endgültige PROC IMPORT wird jetzt:
proc import dbms=xlsx datafile='&filename" replace out=want ;
range="&sheetname$b2:&lastcol.%eval(&nrows-1)" ;
run;
Sie die Zeichenfolge wahrscheinlich konstruieren beschreibt den Bereich Sie wollen und es dann verwenden! ;) – R3uK
Ja, wenn Sie einen bestimmten Bereich möchten, müssen Sie ihn angeben. Ich bin mir nicht sicher, was deine Frage ist ... – Reeza
Danke. Das Problem ist, dass ich einen bestimmten Bereich für jede einzelne Excel-Datei haben möchte. – QuantumMechanics