如何使用getnames = no将excel导入sas?

时间:2014-04-01 19:20:21

标签: sas

我想指定新名称,因此我使用getnames=no属性:

data mylib.test; 
   infile  "C:\Users\test.xlsx" ;
   input var1   $ Opened_Date mmddyy8.  salary dollar9.2;
   DBMS=EXCEL ;
   range="Sheet5$";
   getnames=no;
   mixed=no;
   scantext=yes;
   usedate=yes;
   scantime=yes;
   datarow=3;
run;

但这不会导入任何东西


PS 以下代码getnames=yes正常工作。这意味着excel文件没有问题。但我不想使用yes我需要getnames=no

PROC IMPORT OUT= WORK.TEST 
            DATAFILE= "C:\Userstest.xlsx" 
            DBMS=EXCEL REPLACE;
     RANGE="Sheet5$"; 
     GETNAMES=YES;
     MIXED=NO;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;

1 个答案:

答案 0 :(得分:2)

PROC IMPORT OUT= WORK.TEST 
            DATAFILE= "C:\Userstest.xlsx" 
            DBMS=EXCEL REPLACE;
     RANGE="Sheet5$"; 
     GETNAMES=NO;
     MIXED=NO;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;

在这种情况下,数据步骤没有帮助。您无法以这种方式导入excel文件(实际上)。

然后,您可以创建一个数据步骤,并可以根据PROC IMPORT最初分配的通用名称重命名。

看起来像数据步骤方法的替代方法是libname访问。

libname myexcel excel "c:\Usertest.xlsx" getnames=no scantext=yes mixed=no usedate=yes scantime=yes;

然后您可以访问

这样的文件
data test;
set myexcel,'Sheet5$'n;
rename f1=var1 f2=opened_date (...more...);
run;

我倾向于使用PROC IMPORT,因为它对其他人来说更容易理解,但两者在工作方式上是相同的(PROC IMPORT基本上为你创建了这个libname。)