OK.
Then keeping it simple, I would go as Linus suggested.
PROC IMPORT form EXCEL (be sure to load the first row as an header row)
Then you could maybe load the table layout (var names) into a macro var list, say like this:
proc sql noprint;
select NAME into :VARNAMES separated by ',' from DICTIONARY.COLUMNS
where LIBNAME eq '
MEMNAME eq ''
order by NPOS;
quit;
After that, and assuming your data file is not extensive, build a second data file with an header row and the concatenated data.
data _null_;
infile '';
file '';
if _N_ eq 1 then put "&VARNAMES"; * put header row;
input; * read one row;
put _infile_; * write read buffer to second file;
run;
Then PROC IMPORT the resulting second file, loading the first row as an header row.
SAS will try to guess the size and type of each column from the first 20 rows (you can modify this number through the registry) in the file.
Cheers from Portugal.
Daniel Santos @ www.cgd.pt