2017年9月25日月曜日

【PROC REPORT】RTF出力時の細かい罫線の設定



PROC REPORTでRTF出力する際に、セル毎の細かい罫線(色・太さ・線種)を設定する方法を紹介します。



まず罫線の設定を表すスタイル属性は以下の3つです。



罫線のスタイル属性

  設定内容  指定   指定できる値
 罫線の色 

 BorderxxColor = 
  
 black, white …など 

 罫線の幅
(太さ)

 BorderxxWidth =
 

 1pt, 2pt …など


 罫線の線種  

 BorderxxStyle =

 dashed, dotted, double, hidden, solid …など 


xx部分にはセルのどの位置の罫線を設定するか指定
「Right」「Left」「Top」「Bottom」が入る




例① 特定の列に罫線を引く


工程1
まずは以下の記事で紹介している方法でざっくりとレポート全体の罫線の引き方を変更します。

(PROC TEMPLATEで全体の罫線やフォントをあらかじめ設定しといてもOK)

ods rtf file='出力するRTFファイルのフルパスを指定';

proc report data=sashelp.class nowd
           style(report)=[rules=groups frame=hsides]
           style(header)=[background=white];
   column name sex age ;
   define name / display;
   define sex / display;
   define age / display;
 run;

ods rtf close;


工程2
次に個別に細かい罫線を引いていきます。
たとえば、変数NAME の右に縦罫線を入れたいとします。

以下の記事も参考に罫線を入れてみます
REPORTプロシジャ入門8:書式の設定【STYLE=】

ods rtf file='出力するRTFファイルのフルパスを指定';

proc report data=sashelp.class nowd
           style(report)=[rules=groups frame=hsides]
           style(header)=[background=white];

   column name sex age ;
   define name / display style(header column)={BorderRightColor=black
                                                                BorderRightStyle=double
                                                                BorderRightWidth=1pt};
   define sex / display;
   define age / display;
run;

ods rtf close;




例② 特定の行に罫線を引く


以下の記事を参考に「AGE > 13」の行だけセルの下に罫線を引いてみます。
REPORTプロシジャ入門9:特定セルの書式設定【CALL DEFINE】

(例で使用しているCOMPUTEステートメントは、高頻度でうまく設定できないケースを見かけるので、上記記事と上記記事内にリンクしている記事も要確認)

ods rtf file='出力するRTFファイルのフルパスを指定';

proc report data=sashelp.class nowd
           style(report)=[rules=groups frame=hsides]
           style(header)=[background=white];

   column name sex age ;
   define name / display;
   define sex / display;
   define age / display;
   compute age;
        if age > 13 then
                call define(_row_,"style","style(calldef)={BorderBottomColor=black
                                                                                BorderBottomStyle=solid
                                                                                BorderBottomWidth=1pt}");
   endcomp;
run;

ods rtf close;




例③ 2段以上のヘッダーの罫線

以下をご覧ください。

ods rtf file='出力するRTFファイルのフルパスを指定';

proc report data=sashelp.class nowd
           style(report)=[rules=groups frame=hsides]
           style(header)=[background=white];
   column name ("Height and Weight" height weight);
   define name / display;
   define height / display;
   define weight / display;
run;

ods rtf close;


上のレポートで、ヘッダーが2段になっている「Height and Weight」の下に罫線を引きたいとします。


以下記事を参考に罫線を入れてみます。
ODS出力時に文字の書式設定をする【インラインフォーマット】

ods rtf file='出力するRTFファイルのフルパスを指定';

proc report data=sashelp.class nowd
           style(report)=[rules=groups frame=hsides]
           style(header)=[background=white];

    column name ("(*ESC*)S={BorderBottomColor=black
                                             BorderBottomStyle=solid
                                             BorderBottomWidth=1pt}Height and Weight"  height weight);
   define name / display;
   define height / display;
   define weight / display;
run;

ods rtf close;



0 件のコメント:

コメントを投稿