【问题标题】:Generate proc import logs for multiple files to a pdf将多个文件的 proc 导入日志生成为 pdf
【发布时间】:2014-05-27 23:09:55
【问题描述】:

我编写了一个 SAS 宏,它可以导入文件夹中的所有 excel 文件并且它可以工作。我接下来要做的是 - 将所有 excel 文件的 proc 导入日志或结果发送到单个 pdf。我的 SAS 代码如下所示:

%macro readxls (copyfrom=);
---
---
---
%do i=1 %to $count_files;
ods listing close;
ods pdf file='pathname\report_import.pdf';
proc import datafile="&copyfrom.\...." out=copyto.... DBMS=xlsx replace;
getnames=yes; 
run;
ods pdf close;
ods listing;
%end;
%mend readxls;

由于某种原因,没有生成 pdf 文件。 SAS 日志说:“注意:将 ODS PDF 输出写入磁盘目标“路径名\report_import.pdf”,打印机“PDF”

【问题讨论】:

    标签: sas sas-macro sas-ods


    【解决方案1】:

    您不能将日志直接重定向到 ODS 输出目标。导入过程没有发送到 ODS 目标的输出。

    您可以做的是使用 PROC PRINTTO 将日志重定向到文本文件。接下来,您可以使用 PROC DOCUMENT 导入文件并使用重放功能将其写入 ODS 输出目标。

    filename pdflog 'pathname\report_import.pdf';
    filename tmplog 'pathname\report_import.txt';
    
    proc printto log=tmplog;run;
    
    %macro readxls (copyfrom=);
    
    %do i=1 %to $count_files;
    proc import datafile="&copyfrom.\...." out=copyto.... DBMS=xlsx replace;
    getnames=yes; 
    run;
    %end;
    
    %mend readxls;
    
    %readxls(copyfrom=...);
    
    proc printto;run;
    
    proc document name=pdflog(write);
       import textfile=tmplog to logfile;
    run; 
    
    ods listing close;
    
    ods pdf file=pdflog notoc;
     replay; 
     run;
    ods pdf close;
    
    quit;
    
    ods listing close;
    

    【讨论】:

    • 谢谢!!!通过更改 printto 代码的位置,我终于能够获得日志导入部分的 pdf 输出。
    猜你喜欢
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    相关资源
    最近更新 更多