SAS中文论坛

标题: 怎么同时读进几个EXCEL 文件? [打印本页]

作者: shiyiming    时间: 2011-4-24 06:22
标题: 怎么同时读进几个EXCEL 文件?
proc import  filename='c:/e1.xls' out=d1  dbms=excel;
  getname=yes;
run;
这样读单个的excel,不知道有没有问题。
现在有几个EXCEL文件(e1.xls, e2.xls,e3.xls,...),如何把这些excel文件同时读进一个data里。请高手指教,谢谢。
作者: shiyiming    时间: 2011-4-24 10:38
标题: Re: 怎么同时读进几个EXCEL 文件?
filename改成datafile
此论坛这种问题大把答案;例如:[url:1p25zz8n]http://www.mysas.net/forum/viewtopic.php?f=4&t=6962&p=24191&hilit=import#p24191[/url:1p25zz8n]。
你也可以自己搜索看看。
作者: shiyiming    时间: 2011-4-24 10:44
标题: Re: 怎么同时读进几个EXCEL 文件?
读单个file时,用 filename 是会出错的,把它改为 datafile 就行了!!
proc import [color=#FF0000:3rnjyzpk]datafile[/color:3rnjyzpk]='c:/e1.xls' out=d1 dbms=excel;
getname=yes;
run;

读多个 excel 文件到一个data时,参照下面给出的一段代码,自己把要更改的地方更改后,调试运行下吧,包括路径,还有那个变量个数 n 的值:
[code:3rnjyzpk]filename yours "F:\";  /*存放excel表的路径*/
%let dir=%str(F:\);  /*同上*/
%macro test(filname);
    data w;
        length f1-fn 8; /*导入表中含有多少的变量就把 n 替换成多少,自己改一下*/
        stop;
    run;
    %let filrf=&filname;
    %let did=%sysfunc(dopen(&filrf));/*打开路径下的数据集,并返回一个id 给宏变量 did,注意不是物理的打开*/
    %let listname=;
    %let memcount=%sysfunc(dnum(&did));  /*记录路径下的excel表个数*/
    %if &memcount gt 0 %then %do i=1 %to &memcount;
        %let listname=%sysfunc(dread(&did,&i)); /*读取表名及格式 如:e1.xls*/
        PROC IMPORT OUT= w_&i
            DATAFILE= "&dir.\&listname"
            DBMS=Excel REPLACE;
           * SHEET="sheet1$";  /*excel表中有多个sheet时可以选择*/
            GETNAMES=NO;
            MIXED=NO;
            SCANTEXT=YES;
            USEDATE=YES;
            SCANTIME=YES;
        RUN;
        proc append base=w data=w_&i(where=(f1 ne .));run;/*最后完成的是append添加过程*/
    %end;
    %let rc=%sysfunc(dclose(&did));
%mend;
%test(yours);
[/code:3rnjyzpk]
作者: shiyiming    时间: 2011-4-28 00:30
标题: Re: 怎么同时读进几个EXCEL 文件?
thanks a lot.




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2