导出sas存储过程输出

时间:2015-09-15 17:47:01

标签: sas

我创建了一个存储过程,但我想将输出导出到Excel。我通常的导出语句在存储过程中不起作用。

%let _ODSDEST=none;
%STPBEGIN();
data x;
  set sashelp.class;
run;

proc export data=x outfile = "//my documents/sp_test.xlsx" dbms=xlsx replace;     
  sheet="table1"; 
run; 
* Begin EG generated code (do not edit this line); 
;*';*";*/;quit; 
%STPEND;

有没有办法让它在存储过程中起作用?

2 个答案:

答案 0 :(得分:1)

使存储过程返回excel文件的一种方法(实际上在这种情况下,它是一个excel将会愉快地打开的xml文件)是使用ODS输出tagsets.excelxp(xml)。

执行此操作时,可以使用stpsrv_header修改HTML标头。第一个语句告诉浏览器用excel打开文件,第二个语句告诉它文件名。我相信这个头部修改工作,存储过程需要提供流式结果,而不是包结果。但我可能是错的。

当我在下面运行时,我从浏览器中获取文件下载对话框,允许我打开或保存文件。我是从Stored Process Web App运行的,但在从Information Delivery Portal调用时应该可以正常工作。

%let _odsdest=tagsets.excelxp;
%let rc=%sysfunc(stpsrv_header(Content-type,application/vnd.ms-excel));
%let rc=%sysfunc(stpsrv_header(Content-disposition,attachment%str(;) filename=MyExcelFile.xls));

%stpbegin()
proc print data=sashelp.shoes (obs=&obs);
run;
%stpend()

答案 1 :(得分:0)

你检查了你的拼写proc exportd和outfile ='mypath / my documents / myoutpt.xlsx'dbms = xlsx或outfile ='mypath / my documents / myoutpt.xls'dbms = xls ??你也可以尝试使用ODS。