2019年4月11日木曜日

ODS EXCEL入門: 基本構文




ODS EXCELの構文や機能をまとめていきたいと思います。
まずは基本構文から。




基本構文

ODS EXCEL FILE = "出力するエクセルファイルのフルパス";

     ・・・ 出力するプロシジャを記述 ・・・

ODS EXCEL CLOSE;




ods excel file="パスを指定\test.xlsx" ;

    proc print data=sashelp.cars;
    run;

    proc means data=sashelp.cars;
        var msrp;
        by make;
    run;

ods excel close;




デフォルトの設定ではプロシジャで出力される表ごとにシートが作られます。上の例では、

  • まずprintプロシジャから1表出力されるので1シート作られます。
  • meansプロシジャではbyグループごとに表を作成しているので、byグループの数だけシートが作られます。





EXCELファイルのプロパティを設定する

ods excel file = "パス\test.xlsx"
                title = "SAS: ODS EXCELの勉強"
                keywords = "SAS, ODS EXCEL"
                category = "SAS"
                comments = "ODS EXCELでプロパティを設定"
                status   = "勉強中"
                author   = "a.matsu";

    proc print data=sashelp.cars;
    run;

ods excel close;


この辺の設定はあんまりしないかもだけど、titleとauthorは設定したいことがあるかもしれない。




ODS EXCEL入門記事一覧


注意点


4 件のコメント:

  1. こんにちは。いつも参考にさせていただいています。
    ODSでデータセットの内容をexcel形式で出力・保存するプログラムを作っているのですが、
    ods excel close; を記載していてもExcelが正常にcloseしません。
    どのような原因が考えられますでしょうか。

    もし差し支えなければご教示頂けましたら幸いです。

    返信削除
    返信
    1. アボカドさん
      コメントありがとうございます!

      >ods excel close; を記載していてもExcelが正常にcloseしません。
      「正常にcloseしない」とは以下の①の意味であっておりますでしょうか?
      ①Excelに出力できたが、プログラム実行後もExcelが開いたままで終了しない。
      ②Excelに出力後、開くと「ファイルが破損している」旨のメッセージボックスが表示されてしまい、正しく出力できない。

      削除
  2. お返事頂きありがとうございます。
    はい、ご認識のとおり以下①の状況となります。

    ①Excelに出力できたが、プログラム実行後もExcelが開いたままで終了しない。

    返信削除
    返信
    1. アボカドさん、コメントありがとうございます。
      ご質問いただいた点は、SASの通常の動きと思われます。

      というのも、処理の流れとしては「ODS EXCEL」~「ODS EXCEL CLOSE」でExcelファイルを生成、その後、生成したExcelファイルが自動で開きます。
      (「ODS EXCEL CLOSE」の後にExcelファイルが開きます)

      開かれたファイルは開きっぱなしになります。

      削除