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

3 則留言:

  1. 我想請問一下
    SAS跟OFFICE需要同樣都是64位元或32位元嗎?
    因為我的OFFICE是64位元,SAS是32位元無法匯入EXCEL

    回覆刪除
  2. 請問OFFICE跟SAS需要都是相同位元的嗎?
    因為我的OFFICE是64位元但是SAS是32位元的,無法匯入EXCEL

    回覆刪除
  3. 這個一個很好的問題,有空先閱讀我建議的參考連結A。

    就我的瞭解最好兩的都同樣位元的,在匯入檔案會比較順利。

    然後要使用Office 64或 SAS 64都要有心理準備會遇到一些困難,可見我建議參考連結B和C。

    A: How do I export from SAS to Excel files: Let me count the ways (http://blogs.sas.com/content/sasdummy/2012/02/11/export-excel-methods/ )

    B: The top gotchas when moving to 64-bit SAS for Windows ( http://blogs.sas.com/content/sasdummy/2012/05/01/64-bit-gotchas/ )

    C: 選擇 32 位元或 64 位元版的 Microsoft Office ( http://office.microsoft.com/zh-tw/excel-help/HA010369476.aspx )

    回覆刪除