2014-04-01 180 views
1

我想,所以我用getnames=no属性来指定新的名字:如何使用getnames = no将excel导入到sas中?

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; 

但这不输入任何东西


PSgetnames=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; 

回答

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为你,基本上)。

+0

谢谢。这就是我迄今为止所使用的。显然这是唯一正确的方法。 – Buras

+0

如果你真的想要使用数据步骤,有'libname'访问方法,但这并不能真正为你节省任何东西 - 你仍然需要重命名/ etc。变量。 – Joe