2016-08-02 154 views
1

一個Excel文件的多個工作表,我用這個代碼出口數據集到SAS

proc export data=goldsheet_invalid outfile="C:\Documents and Settings\sasadm\Desktop\gold.xls" dbms=xls replace; 
sheet="gold"; 
run; 

proc export data=platinumsheet_invalid outfile="C:\Documents and Settings\sasadm\Desktop\gold.xls" dbms=xls replace; 
sheet="platinum"; 
run; 

proc export data=titaniumsheet_invalid outfile="C:\Documents and Settings\sasadm\Desktop\gold.xls" dbms=xls replace; 
sheet="titanium"; 
run; 

Error:Statement is not valid or it is used out of proper order

注: - 已經嘗試DBMS = XLSX或DBMS = EXCELCS但不起作用

+0

沒有錯,你的代碼,我可以看到:

更多關於SAS和消耗臭氧層物質的詳細信息可以在這裏找到。在日誌中指向的錯誤是什麼?是否有任何'dbms = xls'工作(沒有工作表名稱等),或者你的excel安裝有問題嗎? – Joe

+0

dbms = xls在沒有表單名稱的情況下工作,但在寫入表單名稱後,我們得到了錯誤 – bhavnish

+0

好的,但是錯誤中還有什麼?它應該告訴你它在抱怨什麼;而且,看到比這一行更多的錯誤,我不會感到震驚。您也可以添加您所使用的SAS版本。運行該代碼表時,SAS 9.4沒有問題。 – Joe

回答

0

相反使用PROC EXPORT時,使用ODS(輸出傳送系統)語句的舊版SAS可以完成此操作。走這條路線並不像PROC EXPORT那麼幹淨,但如果你只想從這些數據集中獲取數據到一個Excel工作簿,並在不同的工作表上得到每個proc語句的結果,就可以做到這一點。

在這種情況下,代碼來完成你所尋找的是:

ods tagsets.excelxp file='C:\temp\gold.xml' options(sheet_name = 'Gold' sheet_interval='proc'); 
proc print data=goldsheet_invalid; 
run; 
ods tagsets.excelxp options(sheet_name = 'Platinum'); 
proc print data=platinumsheet_invalid; 
run; 
ods tagsets.excelxp options(sheet_name = 'Titanium'); 
proc print data=titaniumsheet_invalid; 
run; 
ods tagsets.excelxp close; 

你會發現,創建的文件擴展名是XML,這是必要的。當您在Excel中加載文件時,會按預期方式顯示,並隨時更新文件擴展名。 https://support.sas.com/rnd/base/ods/odsmarkup/TipSheet_ods_xl_xp.pdf