2016-08-02 104 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