長久以來SAS程序產出的報表,大都透過ODS HTML將報表轉EXCEL檔,之前介紹過ODS TAGSETS.EXCELXP的語法(後續簡稱ExcelXP),也很少被使用來處理報表轉EXCEL檔的需求。
ODS HTML應只是將HTML報表的副檔名改為XLS,WIDOWS系統在預設環境下,自然會以EXCEL開啟,算是一種偷吃步吧,但每次開啟檔案,EXCEL均會出現警告「’OOO.xls’的檔案格式與副檔名不相符。此檔案可能已損毀或不安全。除非您信任此檔案的來源,否則請勿開啟此檔案。您仍要開啟此檔案嗎?」(如下圖)。
雖然只是按一個「是(Y)」就可開啟,但檔案很多時,還是挺煩人的。而且就算使用ExcelXP來匯出報表,依然會出現相同的警告,因為ExcelXP所產生的EXCEL檔不是原生的EXCEL檔格式(native Excel format (.xlsx)),詳情請參考ODS TAGSETS.EXCELXP and ODS EXCEL SHOWDOWN。
先以PROC MEANS的報表來比較三組語法和報表樣式的差異。依慣例產生一個模擬檔,語法如下:
data base1; |
ODS HTML的語法
filename odsout "e:\temp\odsexcel\"; proc means data =base1 n mean std p25 p50 p75 maxdec=2; ods html close; |
「結果-html.xls」中報表樣式如下圖。
ODS TAGSETS.EXCELXP的語法
ods tagsets.excelxp path="e:\temp\odsexcel\" file="結果-tagsets.xls" style=printer; |
「結果-excelxp.xls」中報表樣式如下圖。
ODS EXCEL的語法
ods excel file="e:\temp\odsexcel\結果-odsexcel.xlsx" style=printer; |
「結果-odsexcel.xlsx」中報表樣式如下圖。
接下來以PROC FREQ的報表來比較三組語法和報表樣式的差異。模擬檔語法如下:
data base2; |
ODS HTML的語法
filename odsout "e:\temp\odsexcel\"; proc freq data =base2 ; ods html close; |
「結果-freq-html.xls」中報表樣式如下圖,圖中箭頭所指處,當開啟檔案時候會發生不明的移位,讓後續整理報表時候產生困擾。
ODS TAGSETS.EXCELXP的語法
ods tagsets.excelxp path="e:\temp\odsexcel\" file="結果-freq-excelxp.xls" |
「結果-freq-excelxp.xls」中報表樣式如下圖,無發生位移。
ODS EXCEL的語法
ods excel file="e:\temp\odsexcel\結果-freq-odsexcel.xlsx" |
「結果-freq-odsexcel.xlsx」中報表樣式如下圖,無發生位移且可爽快開啟。
結論:
如有將報表轉為EXCEL檔案的需求,建議以ODS EXCEL為主。除了語法相對精簡,所產生的EXCEL檔案為原生格式,可直接開啟,且報表樣式不會位移(應該吧~沒有試過所有的報表,如果發生移位狀況,請分享)。
參考文獻:
1.ODS TAGSETS.EXCELXP and ODS EXCEL SHOWDOWN.Christopher J. Boniface.2017.
2.The ODS Destination for Excel Tip Sheet.
沒有留言:
張貼留言