次は9.4の話です。持ってない方、すみません。家でuniversityで試してください。
SASからEXCELファイルを生成する方法はたくさんあります。
ただODS経由で、生成する場合、今まではods tagsets.excelxp というものがあったのですが、
弱点として
・純粋なXLS形式ではない(XML)ため、開くときにメッセージがでたりする。
・XLSX形式は生成できないこともあり、ファイルサイズが大きくなりがち
・グラフなどの画像の挿入にテクニックがいる(できなくはないらしいですが)
などなどがありました。
(ただ、EXCEL周りは難しいところが多いので、僕の話をあまり信用しないでください)
特にグラフ等の画像をEXCELに挿入するのは、中々悩ましいところで、僕は以前DDEでやってました。
それも、一旦画像を外部ファイルとしてどこかに保存し、それをddeでコピーしてエクセルに
ペタッと貼るというコードだったので、あまりスマートではないなぁと思ってました。
ところが9.4からODS EXCELという、名前そのままの機能が実装されました。
(またしても、もっと早く実装してよ!絶対要望あっただろ!アドイン製品ばっか売ろうと...まあこの辺にしておきましょう)
9.4をどうにか会社にぶち込みたい方は、素人にもわかりやすく便利な機能で、見た目おおっ!てなるので、これを武器に上司をうまく丸め込んでみるとか?(Universityでデモ作れるし)
さて使い方ですが、僕もまだ今日初めてなので、基本だけ
data Q1;
X='い';Y=1;Z=3;output;
X='い';Y=2;Z=1;output;
X='い';Y=3;Z=2;output;
X='ろ';Y=1;Z=2;output;
X='ろ';Y=2;Z=4;output;
run;
という適当なデータがあったとして、コードは
ods excel file='/folders/myfolders/example.xlsx'
style=pearl
options(sheet_interval='none'
heet_name='シート名'
embedded_title='yes');
ods text='自由にテキスト入れれます';
proc print data=Q1 noobs;
run;
proc freq data=Q1;
tables X*Y;
run;
ods graphics / height=400 width=700;
proc sgplot;
series x=y y=z/group=x;
run;
ods excel close;
結果は
と、要はods excelとods excel closeの間にあるプロシジャ出力が
全部エクセル化されるよってことです。
DDEのように、セル番地を指定して、値を出力といった感じではなく、
デザインは完全にプロシジャのアウトプットに依存します。
きめ細かい書式のリスト出力が欲しいのであれば、proc reportとかでなんとか頑張りましょう。
ちなみに、このODS EXCELはエクセルがインストールされてない環境で使えます。
実際に上のサンプルは、入ってないやつで動かして、キングソフトとかで開いたものです。
ODS EXCEL初めて知りました。
返信削除サンプルプログラム動かしてみたんですが、sgplotプロシジャ内のserieseは
seriesのスペルミスですよね。
あと、最後の行のexcelとcloseの間に全角スペースが入っているようです。
細かい話でスイマセン。
ぷるううぬすさん、コメント有難うございます!
返信削除いや、全角いれるとか、初歩的なことして、お恥ずかしい…。ご指摘有難うございます!
精進します!