2019年6月6日木曜日

ODS EXCEL入門: セル内折り返しの設定





以前書いた以下の記事について、もうちょっと掘り下げたいと思います。
ODS EXCELで「セル内改行」されてしまうところを「セル内折り返し」に変える



まずは以下をご覧ください。

ods excel file="出力するパスを指定\test1.xlsx";

    proc report data=sashelp.cars;
    run;

ods excel close;


H1セルの値「Engine Size (L)」はパッと見「セル内折り返し」に見えて、実は「セル内改行」されてます。
こんな感じでODS EXCELでは横幅が足りない場合、セル内改行になってしまいます。



この「セル内改行」を「セル内折り返し」に変えるオプションが今回紹介する「FLOW=オプション」です。






構文

ODS EXCEL OPTIONS(  FLOW = "セル内折り返しにする場所"  );


  • SAS9.4M4からの新機能です。
  • FLOW=には設定値として「セル番地」「HEADER」「ROWHEADER」「DATA」「TABLE」「TEXT」が用意されています。



では各設定値がどのような動きをするのか、1つずつ見ていきましょう。





FLOW = "セル番地"


指定したセルだけ「セル内折り返し」に変えます。

ods excel file="出力するパスを指定\test1.xlsx"  options( flow="H1" );

    proc report data=sashelp.cars;
    run;

ods excel close;





FLOW = "HEADER"


表のヘッダー部分だけ「セル内折り返し」に変えます。

ods excel file="出力するパスを指定\test1.xlsx"  options( flow="header" );

    proc report data=sashelp.cars;
    run;

ods excel close;





FLOW = "DATA"


表のデータ部分だけ「セル内折り返し」に変えます。

ods excel file="出力するパスを指定\test1.xlsx"  options( flow="data" );

    proc report data=sashelp.cars;
    run;

ods excel close;



FLOW = "ROWHEADER"


行ヘッダーだけ「セル内折り返し」に変えます。
たとえば、以下のようにIDとして設定した変数MAKEとMODELが行ヘッダーとなり、A~B列が「セル内折り返し」になります。

ods excel file="出力するパスを指定\test1.xlsx"  options( flow="rowheader" );

    proc report data=sashelp.cars;
        define make / id;
        define model / id;
    run;

ods excel close;




FLOW = "TABLE"


こちらは「"HEADER"」「"ROWHEADER"」「"DATA"」をすべてカバーした機能を持っています。




FLOW = "TEXT"


これは大分説明が必要なんですが、以下をご覧ください。

ods excel file="出力するパスを指定\test1.xlsx" ;

ods excel text="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    proc report data=sashelp.cars;
        column type origin;
    run;

ods excel close;


「ODS EXCEL TEXT="出力するテキスト"」でExcelにテキストを出力することが出来るんですが、上の例でA1セルに出力されたテキストがずらーーーーっとD1セルの領域にまで侵入していますね。


そこで、FLOW="TEXT"を指定すると、、

ods excel file="出力するパスを指定\test1.xlsx"  options( flow="text" );

ods excel text="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    proc report data=sashelp.cars;
        column type origin;
    run;

ods excel close;

このテキストに対して「セル結合」&「セル内折り返し」が設定されます。





ちなみに


以下のような感じで折り返し範囲をカンマで区切って設定することも可能です。

ods excel file="出力するパスを指定\test1.xlsx"  options( flow="table,text" );




0 件のコメント:

コメントを投稿