使用ODS更新Excel输出?

时间:2015-07-01 12:44:01

标签: sas sas-macro sas-ods

我正在运行一个宏程序来分析数据集。在我的宏的最后,我使用ODS语句和proc报告来导出我的结果。我想要的是:每次我使用新的数据集运行宏程序时,结果将在同一Excel文件的新工作表中更新,而不删除旧数据集的表格,也不删除旧的Excel文件。请帮帮我。

1 个答案:

答案 0 :(得分:1)

解决此问题的基本方法是在宏迭代之外使用主ods tagsets.excelxp语句。然后只控制宏内的工作表。

说你有:

%macro run_me(sheet=,sex=);
  ods tagsets.excelxp options(sheet_name="&sheet.");
  proc print data=sashelp.class;
    where sex="&sex.";
  run;
%mend run_me;

ods tagsets.excelxp file="c:\temp\test.xml";
  %run_me(sheet=Male,sex=M);
  %run_me(sheet=Female,sex=F);
ods tagsets.excelxp close;

在分析的其余部分中,您必须小心输出;您可能需要使用ods select语句,如下所示:

ods tagsets.excelxp select none;

在宏的开头,然后当你想再次开始输出时

ods tagsets.excelxp select all;

(或者只是选择你想要的特定输出。)