2014-04-01 181 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