|
|
板凳

楼主 |
发表于 2007-9-6 15:23:06
|
只看该作者
Re: 多维数据导入与排列
谢谢楼上回复
我也想了一个办法
%let dir=E:\temp1\;
LIBNAME excellib excel "e:\temp1\data.xls" ;
%macro ReadXls (in=,out=);
/*libname excellib excel "&dir.\&inf"; /* STEP 1 */
proc sql noprint; /* STEP 2 */
create table sheetname as
select tranwrd(memname, "''", "'") as sheetname
from sashelp.vstabvw
where libname="EXCELLIB";
select count(DISTINCT sheetname) into:cnt_sht
from sheetname;
select DISTINCT sheetname into :sheet1 - :sheet%left(&cnt_sht)
from sheetname;
quit;
libname excellib clear; /* STEP 3 */
%do i=1 %to &cnt_sht;
proc import datafile="&dir.\&in" /* STEP 4 */
out=_sheet dbms = excel2000 replace;
sheet="&&sheet&i";
getnames=yes;
length region $40;
run;
data temp2;
set _sheet;
from ="&&sheet&i";
year = substr(from,2,4);
drop from;
run;
/* APPEND DATA FROM EACH EXCEL TO A MAIN TABLE */
%if &i = 1 %then %do;
data &out;
set temp2;
run;
%end;
%else %do;
data &out;
set &out temp2;
run;
%end;
%end;
/*proc append base=master
data=sheet&i force; /* STEP 5 */
/*run;%end;*/
%mend ReadXls;
%ReadXls (in=data.xls,out=fromexcel) |
|