SAS-使用macros将结果输出为excel
我用下面的代码将结果导出为excel文件。 但是,每次都会以文件types输出结果。 我不得不手动改变他们的types为Excel。 &from.&&memname&i
后&from.&&memname&i
我尝试将.xls
放入,但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);
您可能会遇到来自macrosvariables终结符的问题。 如果你试试:
&Dir\&&memname&i.xls
这是行不通的。 这个点是macrosvariables的终结符,事实上在你的情况下,你需要多于一个,因为你使用了两个&
– 所以&[i].
是一个macrosvariables,接下来你有&[memname&i.].
作为第二个(第一个&
消失)。 所以你需要:
&Dir\&&memname&i...xls
创build.xls扩展名。
请注意, tagsets.excelxp
不会创build本机excel文件。 它创build了Excel可读的xml文件; 所以如果你把.xls
放在它们上,excel会给你带来一些麻烦(在某些情况下,它会打开,在一些情况下会拒绝,取决于你的设置和excel的版本)。 如果您支持.xlsx
文件并使用SAS 9.4 TS1M1或更高版本,则最好使用ods excel
。