2013-07-12 96 views
0

我试图抑制HTML输出,并得到PROC PRINT只输出到CSV,但ODS HTML Close似乎不工作。抑制SAS中的HTML输出

我的代码是:

ODS HTML close; 
ODS CSV file="\\..output folder..\filename.csv"; 
proc print data=test; 
run; 
ODS CSV close; 
ODS HTML; 
+0

您运行的是什么版本的SAS的? – Joe

回答

1

你的方法似乎有点奇怪,为什么诉诸于ods csv? SAS有一个进程导出过程:

proc export data=test outfile="\\..output folder..\filename.csv" dbms=CSV replace; 
run; 

可以进一步配置有不同的分隔符,没有标题等:http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000393174.htm

编辑 在回答您的评论:我看到两种方式围绕导致您无法尝试进行导出的问题。

第一种方法是将validvarname设置为ANY,这使您在选择变量名称时有很大的自由度。例如: -

options validvarname=ANY; 
data test; 
    'Column Header Text I Want'n=1; output; 
    'Column Header Text I Want'n=5; output; 
run; 
proc export data=test outfile="\\..output folder..\filename.csv" dbms=CSV replace; 
run; 

就个人而言,我不是上述方法的粉丝,因为我发现它会导致更难阅读的代码时,你再也不用为变量的一些命名规则。

第二种方法 - 我更喜欢 - 使用您想要的文本标记变量,并将标签选项放在proc导出文件上。例如: -

data test; 
    label variable_name='Column Header Text I want'; 
    variable_name=1; output; 
    variable_name=5; output; 
run; 
proc export data=test outfile="\\..output folder..\filename.csv" dbms=CSV replace LABEL; 
run; 

注意,有输出一个小的区别:第一种方法会不会把周围的列名引号,而第二种方法将这样做。

最后,同时做一些额外的阅读我自己,我偶然发现了这一点,这可能是帮助你还有:http://www.sascommunity.org/wiki/Create_a_CSV_file_without_column_names/headers_in_row_1#DATA_NULL_with_a_PUT_statement.2C_all_fields_quoted

+0

ODS CSV与PROC EXPORT具有显着不同的功能。除此之外,它是获取价值标签而非CSV中的值的一种非常简单的方法。 – Joe

+0

@Joe:当使用proc export导出为CSV时,结果是带有格式化数据的csv(假设您正在使用值标签)。只是在9.2和9.3做了一个测试,我得到了格式化输出(例如date9格式的数据作为文本字符串) – mvherweg

+0

Hi Shorack,我使用ODS CSV的主要原因是因为PROC EXPORT无法处理其中包含空格的变量名。 –

0

啊,我也发现了这个问题。结果窗口仍然会显示HTML输出,这将真的减慢程序,因为ODS HTML CLOSE似乎只影响输出到特定文件,而不是结果窗口。

为了制止这种情况,我应该使用ODS RESULTS OFF;来代替。

ODS RESULTS OFF; 
ODS CSV file="\\..output folder..\filename.csv"; 
proc print data=test; 
run; 
ODS CSV close; 

编辑:看来ODS RESULTS不能随意开启和关闭,以使只有某些PROC PRINT语句生成输出。这对我来说真的很烦人,所以我要用Shorack的PROC EXPORT方法。

+1

这是不正确的。我经常使用ODS HTML CLOSE;关闭默认的html输出。你确定你不是在谈论目的地(“输出”标签)吗? – Joe

+0

我在企业指南中使用ODS TAGSETS.EXELXP时遇到了一些困难,因为在同一台服务器上,它比批处理需要更长的时间。 (对于有很多变量的输出...不是每个TAGSET输出)我怀疑这是由于也写入结果窗口。我刚刚用RESULTS OFF(结果关闭)尝试了它,它似乎更快(并且没有RESULTS选项卡)。 –

+1

嗨,乔。我认为困惑是由于SAS的不同版本。卡罗来纳州和我似乎在使用SAS 9.3及以上版本。在9.2及以下版本中,LISTING目的地是指“输出”窗口。在9.3和更高版本中(我使用EG),“输出”窗口显示一个HTML输出,并且LISTING目标默认关闭。在这种情况下,ODS RESULTS OFF似乎是禁用输出窗口的正确命令。对此的更长时间的讨论如下:http://support.sas.com/resources/papers/proceedings12/250-2012.pdf –

1

我一直在尝试了一整天,终于得到了我。我想从结果查看器中压制的东西就在这里(以及宏的末尾)。我在结果观众想和现在所谓的在最后的一宏结果... Brubumski

ODS HTML close; * bsk; 
    ods results off; * bsk; 
    ods csvall file="&file1"; 
    proc print data=tr_outds noobs; run; 
    ods csvall close; * bsk; 
    ods results on; * bsk; 
    ODS HTML;   * bsk; 

    %OdsOn1(outds,outds2,tr_outds, file1, file2); * bsk; 

%mend process_input_data_10_10; 

%macro OdsOn1(outds,outds2,tr_outds, file1, file2); 
    proc freq data=outds;tables Group_nm/missing;run; 
    proc freq data=outds2;tables case_id/missing;run; 
    proc print data=tr_outds(obs=10) noobs; run;* bsk; 

    ods csvall file="&file2"; 
    proc print data=cases noobs; run; 
    ods csvall close; 
%mend OdsOn1;