2013年12月20日

【SAS 小技巧】匯出Excel工作表名稱前會出現底線


透過SAS/ACCESS Interface to PC Files 的PROC EXPORT程序輸出結果,會遇到工作表(sheet)的名字前出現底線(underscore),例如在SAS裡面設定工作表名稱為「A9」,但在Excel打開就變成「_A9」。

這是一個小到不行的疑問,不過多年來我也沒有去了解為何,反正大部分狀況都沒什麼影響。不過最近遇到一個工作,才讓我認真去找一下答案。最後找的答案很簡單,就是命名的時候避免使用【1~3字母1個或多個數字】的組合,可以參考下面的實際得到的結果。

data a1;
do i=1 to 2;
    do x= 1 to 2;
    output;
    end;
end;
run;
proc export data = a1
   outfile = "c:\temp\exporttest.xlsx"
   dbms =  excel2010 replace;
   SHEET="A9"; /*更換工作表名稱*/
run;

結果

SAS

Excel

SAS

Excel

SAS

Excel

A9 _A9 Z99 _Z99 TRY123 _TRY123
AA9 _AA9 ZZ99 _ZZ99 IV65536 _IV65536
AAA9 _AAA9 ZZZ99 ZZZ99 XFD1048576 _XFD1048576
AAAA9 AAAA9 ZZZZ99 ZZZZ99    

這個問題會發生,主要是SAS設定工作表名稱時,會避免與EXCEL"範圍名稱"相同而發生的。在SAS 9.X版在遇到這個狀況就會員設定的名字前面加上底線。

官方說明:Problem Note 14475: PROC EXPORT to Excel inserts leading underscore in Worksheet name

沒有留言:

張貼留言