2012年10月14日

【SAS 9.3小技巧】SAS 9.3 64位元版匯入Excel?!

使用SAS 9.3 64位元版,可能會遇到匯入Excel檔案失敗的狀況。
舉例來說,用以下語法匯入Excel檔案:

PROC IMPORT OUT= WORK.ehouse1
DATAFILE= "D:\成交狀況.xlsx"
DBMS=EXCEL REPLACE;
RANGE="資料$";
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;

在LOG(日誌)會出現以下的文字:
ERROR: Connect: 類別未登錄
ERROR: Error in the LIBNAME statement.
Connection Failed. See log for details.

在SAS使用手冊明明寫到32和64位元版均可以透過PROC IMPORT匯入Excel檔案了,但為什麼會失敗了?



這點在手冊上沒有清楚寫明白,SAS 9.3 64位元版能正確匯入Office 64位元版的檔案,但無法匯入Office 32位元版的檔案,因此才會出現如此的錯誤。
因此遇到64位元版無法正確匯入Excel請先檢查你電腦Office的版本。先開啟Excel後點選「檔案」然後選取「說明」,就可以看到目前使用Office的版本了,如下圖。
image
在SAS的官方支援網頁有說明如何處理這個問題,簡單來說就是安裝「SAS® 9.3 PC Files Server」
安裝PC Files Server後,匯入Excel的語法要改為:

PROC IMPORT OUT= WORK.data1
DATAFILE= "D:\成交狀況.xlsx"
DBMS=EXCELCS REPLACE;
RANGE="資料$"
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;

或是
libname xls1 PCFILES PATH="d:\成交狀況.xlsx"
data data1;
set xls1."資料$"n;
run;
libname xls1 clear ;

更多語法說明,就請自行參考SAS官方網頁的說明了。
Usage Note 43802: Installing SAS® 9.3 PC Files Server and using it to convert 32-bit Microsoft Office files to SAS® 64-bit files