在SAS中将变量的值ODS到rtf文件的最简单方法是什么

在SAS中将变量的值ODS到rtf文件的最简单方法是什么,sas,Sas,将变量值ODS到rtf文件的最简单方法是什么 不显示表或列。 如果可能的话,我宁愿不使用宏来完成这项工作 提前感谢我的朋友们两种选择: ods proctitle=no; options nodate nonumber; title; ods rtf file="d:\temp\test.rtf" style=minimal; proc print data=sashelp.class(where=(name='Alfred')) noobs label style={borderstyle=

将变量值ODS到rtf文件的最简单方法是什么 不显示表或列。 如果可能的话,我宁愿不使用宏来完成这项工作

提前感谢我的朋友们

两种选择:

ods proctitle=no;
options nodate nonumber;
title;
ods rtf file="d:\temp\test.rtf" style=minimal;

proc print data=sashelp.class(where=(name='Alfred')) noobs label style={borderstyle=none}; 
  var age;
  label age='00'x;
run;

data _null_;
  set sashelp.class;
  where name='Alfred';
  declare odsout ODS();
  ods.format_text(data:age);
run;


ods rtf close;
后者正是您想要的,但RTF不完全支持后者。请参阅日志。前者或多或少做你想做的事;仍然有一个标题行,但它是空的


正如在评论中指出的,如果有更多的上下文,这就不是一个完全相同的问题。

如果ODS不是一个要求,并且您只需要使用最简单和最快的方法,那么您总是可以将值直接写入扩展名为.rtf的文件。如果需要的话,这将产生最干净的RTF输出

简单版本:

这取决于文件的接收者以及他们将如何使用该文件。生成的文件将在say Word和大多数.RTF阅读器中完全打开

更复杂的版本:

如果您需要有效的.RTF语法,还可以为有效的RTF添加最小语法,从我收集的数据来看如下所示:

{\rtf1\ansi\f0
Hello
}
data _null_;
  file "c:\test.rtf";
  set mytable end=eof;
  if _n_ eq 1 then do;
    put "{\rtf1\ansi\f0";
  end;
  put my_variable;
  if eof then do;
    put "}";
  end;
run;
生成上述内容的代码:

data _null_;
  file "c:\test.rtf";
  put "{\rtf1\ansi\f0";
  put "Hello";
  put "}";
run;
如果表中有一个变量,可以将它们全部打印到.rtf文件中,如下所示:

{\rtf1\ansi\f0
Hello
}
data _null_;
  file "c:\test.rtf";
  set mytable end=eof;
  if _n_ eq 1 then do;
    put "{\rtf1\ansi\f0";
  end;
  put my_variable;
  if eof then do;
    put "}";
  end;
run;

参考文献:和维基百科.< /p> 如果你已经有其他文本进入你的RTF,你需要变量的值放在内联中,那么我认为最明智的方法是将值存储在宏变量中,并把它放在RTF中的文本中间。如果您希望将宏逻辑保持在最小值,则可以在数据步骤中通过调用symput生成宏变量,或根据您的偏好通过proc sql选择into。例如

proc sql noprint;
    select Age
    into :Alfred_age 
    from sashelp.class 
    where name = 'Alfred';
quit;

ods listing close;
ods rtf file = "C:\temp\test1.rtf";

ods rtf text = "Alfred's age is %sysfunc(strip(&Alfred_age)).";

ods rtf close;
ods listing;

您希望rtf文件中除了有问题的值之外没有任何内容,还是希望能够将该值放在更复杂的rtf中?该值是否需要与现有文本内联放置?是的,你是对的,我希望能够将该值放置在各种文本中更复杂的rtf中。它确实需要与现有文本放在一起