SAS-使用宏将结果输出为excel

时间:2016-10-28 20:57:55

标签: excel sas output

我使用以下代码将结果导出为ex​​cel文件。但是,每次都会以文件类型输出结果。我必须手动将其类型更改为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
  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);

1 个答案:

答案 0 :(得分:2)

宏变量终结符可能存在问题。如果您尝试:

&Dir\&&memname&i.xls

那不行。点是宏变量终止符,事实上在你的情况下你需要不止一个,因为你使用了两个& - 所以&[i].是一个宏变量,接下来你有{{} 1}}作为第二个(第一个&[memname&i.].消失)。所以你需要:

&

创建.xls扩展名。

请注意,&Dir\&&memname&i...xls 创建本机Excel文件。它创建了excel可读的xml文件;如果你把tagsets.excelxp放在它们上,那么excel会给你一点麻烦(在某些情况下它会打开,在某些情况下它会拒绝,取决于你的设置和excel的版本)。如果您支持.xls文件且使用SAS 9.4 TS1M1或更高版本,则最好使用ods excel