SAS- 在某些但不是全部 proc 打印 ods 输出上抑制结果查看器

SAS- Supress Results view on some, but not all, proc print ods outputs

我希望能够将我的所有报告打印到外部文件,但只在结果查看器中显示 select 少数报告。在下面的示例中,我希望显示和打印 reportA 和 reportB (file.xls),但要将 reportC 打印到单独的文件 (file2.csv) 并且不显示在结果查看器中。有什么想法吗?

ods msoffice2k file="/file/file.xls";
proc print data=reportA;
run;
proc print data=reportB
run;
ods msoffice2k close;
ods csvall file="/file/file2.csv";
proc print data=reportC;
run;
ods csvall close;

关闭默认的列表输出。或者 HTML 如果这是系统中的默认结果 window。创建文件后重新打开输出。

ods msoffice2k file="/file/file.xls";
proc print data=reportA;
run;
proc print data=reportB
run;
ods msoffice2k close;
ods listing close;
ods html close;
ods csvall file="/file/file2.csv";
proc print data=reportC;
run;
ods csvall close;
ods listing;
ods html;

您还可以使用 ODS EXCLUDEODS SELECT 来定位特定目的地。

例如,ods html select none; 将暂时关闭 HTML 目的地,但实际上并没有关闭它 - 它只是暂时不会得到任何结果。然后您可以使用 ods html select all; 将其重新打开。

您也可以使用 ods html exclude all; 执行相同的操作,然后使用 ods html exclude none; 将其重新打开。

对于任一语句,您还可以在 ods select/exclude 中使用 where 语句来过滤以仅影响输出的一个特定部分。有关详细信息,请参阅 documentation

我实际上通过使用 proc export 抑制 csv 输出显示的功能找到了更好的解决方案。

ods msoffice2k file="/file/file.xls";
proc print data=reportA;
run;
proc print data=reportB
run;
ods msoffice2k close;

proc export data=reportC
outfile="/file/file2.csv"
dbms=dlm
replace;
delimiter=",";
run;

感谢@Reeza 的帮助,我会在以后的项目中记住这些设置。