SAS-使用宏将结果输出为excel
我使用以下代码将结果导出为excel文件。但是,每次结果都以文件类型输出。我必须手动将其类型更改为excel。我尝试将SAS-使用宏将结果输出为excel,excel,sas,output,Excel,Sas,Output,我使用以下代码将结果导出为excel文件。但是,每次结果都以文件类型输出。我必须手动将其类型更改为excel。我尝试将.xls放在&from.&memname&I之后,但SAS无法识别此格式。我假设可能的原因是.x,但我不知道如何解决这个问题 %macro tradetime(sourcelib=,from=,going=,dir=); proc sql noprint; /*read datasets in a library*/ create table mytables as s
.xls
放在&from.&memname&I
之后,但SAS无法识别此格式。我假设可能的原因是.x
,但我不知道如何解决这个问题
%macro tradetime(sourcelib=,from=,going=,dir=);
proc sql noprint; /*read datasets in a library*/
create table mytables as
select *
from dictionary.tables
where libname = &sourcelib
order by memname ;
select count(memname)
into:obs
from mytables;
%let obs=&obs.;
select memname
into : memname1-:memname&obs.
from mytables;
quit;
%do i=1 %to &obs.;
ods tagsets.excelxp file= "&Dir\&&memname&i" /*output the results to target file*/
style=XLsansPrinter;
ods listing close;
ods results off;
proc univariate data= &from.&&memname&i;
var time_l_ ;
run;
quit;
ods tagsets.excelxp close;
ods listing ;
ods results on;
%end;
%mend;
%tradetime(sourcelib='AXP',from=AXP.,going=AXP.,dir=D:\Data\description);
宏变量终止符可能有问题。如果您尝试:
&Dir\&&memname&i.xls
那是行不通的。点是宏变量的终止符,事实上,在您的例子中,您需要不止一个,因为您使用的是两个&
-所以&[i]。
是一个宏变量,然后您将&[memname&i.]
作为第二个宏变量(第一个&
消失)。因此,您需要:
&Dir\&&memname&i...xls
创建.xls扩展名
请注意,tagsets.excelxp
不会创建本机excel文件。它创建excel可读的xml文件;因此,如果将.xls
放在excel上,excel会给您带来一些麻烦(在某些情况下,它会打开,在某些情况下,它会拒绝打开,具体取决于您的设置和excel版本)。如果您支持.xlsx
文件,并且具有SAS 9.4 TS1M1或更高版本,则最好使用ods excel