加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用SAS批量导入一个文件夹内的多个excle表

(2010-08-06 08:20:50)
标签:

杂谈

%let dirs=C:\aa;  

%macro get_filenames(location);
filename _dir_ "%bquote(&location.)";
data filenames(keep=memname tmp);
  handle=dopen( '_dir_' );
  if handle > 0 then do;
    count=dnum(handle);
    do i=1 to count;
      tmp=cats("tmp",i);
      tmp=Tranwrd(tmp," ","");
      memname=dread(handle,i);
    
      output filenames;
    end;
  end;
  rc=dclose(handle);
run;
filename _dir_ clear;
%mend;
%get_filenames(&dirs);  

%macro readExl(name=,tmp=);
PROC IMPORT OUT=&tmp

DATAFILE= "&dirs\&name"
DBMS=EXCEL REPLACE;
SHEET="Sheet1$";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;
%mend;

data _null_;
   set Filenames;
   call execute('%readExl(name= '||memname||',tmp='||tmp||')');
run;

proc datasets library=work nolist;
    delete target;
run;

%macro mergeData(tmp=);
    proc append base=target data=&tmp force;
    run;
%mend;

data _null_;
   set Filenames;
   call execute('%mergeData(tmp='||tmp||')');    
run;

%macro deleteTmp(tmp=);
    proc datasets library=work nolist;
        delete &tmp;
    run;
%mend;

data _null_;
   set Filenames;
   call execute('%deleteTmp(tmp='||tmp||')');    
run;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有