2016-08-16 51 views
1

問:我怎樣才能導出數據集到Excel工作簿(最好的.xlsx)的各個選項卡的子集,但不運行PROC EXPORT幾次?SAS:導出數據子集,以單獨的工作簿選項卡在Excel


我的解決方案

該數據集包含15個指標。不幸的是,這些指標沒有可以被索引的名字。這意味着我不能將導出過程放入一個循環遍歷計數器15次的宏,並將該名稱附加到索引中。該指標是(不是真的),比如像「車」,「車」,「自行車」,「恐龍」等

我想出瞭解決的辦法是這樣的:

proc export data = data_set 
       (where = (indicator = "car")) 
      outfile = "c:\workbook.xlsx" 
      dbms = xlsx replace; 
      sheet = car; 
run; 

... 

proc export data = data_set 
       (where = (indicator = "dinosaur")) 
      outfile = "c:\workbook.xlsx" 
      dbms = xlsx replace; 
      sheet = dinosaur; 
run; 

然而,這顯然是低效的,並且要求進行某種自動化。

+0

你有什麼版本的SAS?如果9.4 ODS Excel可以自動使用,否則使用Tagsets,但它會創建一個xml而不是xlsx文件。 – Reeza

+0

我正在使用SAS 9.4。我不確定我有什麼其他產品或維護更新。我將如何檢查?感謝您提出問題,這是我在提問時應該記得提供的信息。 :) –

回答

0

您可以使用libname工具,這是proc export通常在後臺使用的工具。

libname myexcel xlsx "c:\outwhatever\myfile.xlsx"; *can use XLSX if 9.4+ or EXCEL if earlier; 

這就給了你一個普通LIBNAME就好像它是一個SAS LIBNAME,你可以寫它,像這樣:

data myexcel.sheetname; 
    set whatever; 
run; 

或者使用PROC COPY或相似。

還有其他選擇(例如使用OLEDB或類似的),但libname是最簡單的。有關更多詳細信息,請參見the documentation

0

如果您有SAS 9.4 ODS Excel非常簡單且很好,請將sheet_interval選項設置爲group,併爲表名添加前綴。

proc sort data=sashelp.class out=class; 
by age; 
run; 

ods excel file='/folders/myfolders/sample.xlsx' options (sheet_interval='bygroup' sheet_label='Age'); 

proc print data=class noobs label; 
by age; 
run; 

ods excel close; 
相關問題