0

我编写了一个 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”

4

1 回答 1

3

您不能将日志直接重定向到 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;
于 2014-05-28T06:28:15.657 回答