在构建rtf、pdf等文件时主要用到的就是ODS(output delivery system),即输出传输系统,ODS通过各种挑选或剔除将数据集按照不同的形式输出到不同的平台,可以输出你所定义表的任何类型的数据和布局。

因为目前只学习到了rtf文本的输出,这里只介绍rtf文本的输出程序;

直接上代码:

*本代码适用于已经统计好表格只差导出的rtf;
*首先定义一下options语句,nofmterr是因为避免因为数据的格式问题报错,compress=yes压缩数据集的大小,nodate不在页面上输出日期,date就是添加日期,noquotelenmax不在日志中发送关于字符串最大长度的信息,nonumber不显示页码;

options nofmterr compress=yes nodate noquotelenmax nonumber;
*下面设置封面;
data text;
    text="^{style [fontweight=bold fontsize=18pt] 2022年高三全部班级成绩汇总} /*bold
字体加粗*/
         ^{newline 2} /*设置空白行*/
         ^{style [fontweight=bold fontsize=16pt] 某某中学} 
         ^{newline 2} 
		 ^{style [fontsize=14pt] 2022年4月6日}";
run;

option center;*位置在正中间;
ODS ESCAPECHAR="^";*表示^为触发条件,只要碰到这个符号就会进行{}中要求的格式设置;

ods listing close;*因为listing是在默认情况下是打开的,所以创建rtf文件时需要将其关闭;

*创建rtf文件;
/*bodytitle是下边设定的标题都是在文本中,如果不添加则会显示在页眉中;startpage=yes/no代表了每个表是否要分页;*/

ods rtf file="c:\2022年高三全部班级成绩汇总.rtf" bodytitle startpage=yes     
        style=journal3;   *xxx.rtf是所创建的rtf文本的具体位置,journal3是sas中自带的表格格式三线表;


*设置标题;
title;

title1 j=l h=10pt "    ";*一般表格输出的时候页面最上面需要空一行,j=l代表向左对齐;

*设置表格;

options orientation=portrait;*输出方式是横向还是竖向,默认是竖向,横向是(LANDSCAPE);
ods rtf;

title2 bold font="宋体" j=l h=13pt "1-5班成绩";
title3  bold font="宋体" j=l  h=13pt "1.  1班成绩";

title4 h=12pt "   ";*预留空白行;

title5 font="等线" j=c h=10.5pt "表1  1班成绩";

footnote1 j=c h=10pt "{pageof}";*j=c:justification=center页面下边脚注位置是中间,pageof是指一共有几页而这是第几页1 of 7;

ods proclabel="表1  1班成绩";


proc report data=table1 nowd; *table1是你之前创建的数据集;
/*nowd:nowindows,从SAS9.4版本开始,nowindows已经是默认选项,可以忽略,在之前版本如果没有则会打开交互式报表窗口;*/

             column name score order;*选择用到的列;
*设置格式;
			 define name / width=45 "姓名"  style=[width=50% font_face="宋体" font_size=10.5pt] ;
			 define score / width=45 "成绩" center style=[width=10% font_face="宋体" font_size=10.5pt] ;
			 define order / width=45 "排名"  center style=[width=10% font_face="宋体" font_size=10.5pt];
run;

title2;
title3;
title4;
title5;


title1;
title2;

ods rtf close;

 输出的结果是这样显示的:

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐