我輩はブロガーではない。ネタもまだない

SASとかDelphiあたりの人様の役に立たないネタを提供します

SAS ODS Excel Statementのオプション一覧(日本語)

先日、SASユーザ総会2019に参加してきました。

なんだか例年よりもシステマチックな方向に向かっているような。
これはSASがオープンになりつつあり、様々な技術との連携ができる
ようになってきたからかもしれません。

さて、その中で面白かったセッションを1つ。
SAS忘備録でおなじみ(?)の松沢さんによるODS Excel入門です。

いろいろなことができそうなので帰ってから調べてみると、ユーザーズガイドは英語版(第5版で、日本語版はまだ第3版!)のみだったので検証がてら翻訳してまとめてみました。(とっとと翻訳してくれないかな!

 

細かい情報は以下のExcelからどうぞ(更新日:2019-09-24)

  odsexcelJP.xlsx

 

なお、Suboptionで指定できるExcelのヘッダー、フッター書式を使用するとExcelファイルが壊れてしまう件についてはM6で修正されており、ユーザがわざわざ&を&にエスケープする必要はなくなっているようです。(拡張子xlsxのExcelファイルは内部的にxmlで管理しており、xmlでは&等をエスケープ処理する必要があるものの、正しくエスケープ処理されていなかったのが原因だと思われます。逆に、"とすると、Excelでは"と認識されます。)

また、M5までの場合、&Uを指定しておけばなぜか他の&までもがエスケープ処理されるので、おまじないとして入れておくことをおすすめします。

 

まず、オプションから

Option ターゲット 補足
ANCHOR CSSにおけるIDの役割。DOMで出力したHTMLでIDが確認できる
AUTHOR プロパティ「詳細/元の場所/作成者、および前の作成者」  
BOX_SIZING セルの幅の計測方法 CONTENT-BOX: 指定したサイズの外側に境界線やマージンが描画されます
BORDER_BOX: 指定したサイズの内側に境界線やマージンが描画されます
CATEGORY プロパティ「詳細/説明/分類項目」  
COMMENTS プロパティ「詳細/説明/コメント」  
CSSSTYLE CSSを適用できる  
DOM HTML形式でDocument Object Modelを出力 ファイル名もしくは(ドキュメントに記載がないが)ファイル参照名で指定が可能
DPI グラフ出力の画像解像度 高解像度を指定する場合は、MEMSIZEで500MB以上を指定する
FILE 出力ファイル名  
GFOOTNOTE グラフィックアウトプットへフットノートを出力するかどうか SGPLOT, SGPANEL, SGSCATTER プロシージャのみ対応
GTITLE グラフィックアウトプットへタイトルを出力するかどうか SGPLOT, SGPANEL, SGSCATTER プロシージャのみ対応
ID IDを指定して複数のインスタンスを生成 異なるオプションを指定したインスタンスを指定し、同じODS出力を異なる形式で出力できる。Identifierは一意であれば、文字でも数値でもよい。テストで結果を数パターンか一気に作成したい時等に有効?
KEYWORDS プロパティ「詳細/説明/タグ」  
SASDATE なし 効果なし(ドキュメントから削除予定とのこと)
STATUS プロパティ「詳細/コンテンツ/内容の状態」  
STYLE スタイルを指定  
TEXT テキストをセルA1に出力  
TITLE プロパティ「詳細/タイトル」  
WORK 一時ファイルを生成するフォルダを指定 ドキュメントではファイル参照名がクオーティングされているが、必要ない

オプションは
ODS EXCEL OPTIONS
という形で指定します。複数の場合はスペース区切り。

 

続いて、サブオプション

Option ターゲット 補足

ABSOLUTE_COLUMN_

WIDTH

カラム幅

カンマ区切りで指定し、指定しない列がある場合は、指定したものが繰り返され、データの無い列は無視される。(例:ABSOLUTE_COLUMN_WIDTH=
'10px,20in,30mm,4cm')
単位はin(インチ)、cm、em(標準的な組版の幅の単位)、ex(標準的な組版の高さの単位)、mm、pt(Point)、px(ピクセル)が指定できる

ABSOLUTE_ROW_HEIGHT 行の高さ カンマ区切りで指定し、指定しない列がある場合は、指定したものが繰り返され、データの無い列は無視される。(例:ABSOLUTE_COLUMN_HEIGHT=
'10px,20in,30mm,4cm')
単位はin(インチ)、cm、em(標準的な組版の幅の単位)、ex(標準的な組版の高さの単位)、mm、pt(Point)、px(ピクセル)が指定できる
AUTOFILTER  フィルタを設定 ALL: すべてのカラムに設定する
NONE: 設定しない
range: 範囲で指定する(3-5 | A: C)
column: カラムを指定する(2,4,6)
BLACKANDWHITE ページ設定/シート/白黒印刷  
BLANK_SHEET 空シートを追加 シート名は1以上28文字以下
CENTER_HORIZONTAL ページ設定/余白/ページ中央/水平  
CENTER_VERTICAL ページ設定/余白/ページ中央/垂直  
COLUMN_REPEAT ページ設定/シート/印刷範囲/タイトル列 column: カラムを指定する('1')
range: 範囲で指定する('1-3' | 'A: C').
HEADER: ヘッダー列
CONTENTS コンテンツ一覧のシートを作成  
DPI ページ設定/ページ/印刷品質 プリンタによっては設定がなく、反映できない場合もある
DRAFTQUALITY ドラフト品質を印刷に使用するか ONの場合はグラフが印刷されない
EMBEDDED_FOOTNOTES フットノートをワークシート上に出力するか  
EMBED_FOOTNOTES_ONCE フットノートをワークシート上の最後に一度だけ出力するか  
EMBEDDED_TITLES タイトルをワークシート上に出力するか  
EMBED_TITLES_ONCE タイトルをワークシート上の最初に一度だけ出力するか  
FITTOPAGE ページ設定/ページ/拡大縮小印刷/次のページ数に合わせて印刷 ここでOFFを指定しても、PAGES_FITWIDTHもしくは PAGES_FITHEIGHTに'1'を指定した場合は、ONになる
また、ONを指定すると、PAGES_FITWIDTHと PAGES_FITHEIGHTを指定しない場合はそれぞれ'1'がセットされる
FLOW セル幅に収まりきれない場合に、セル内改行を使用せずに折り返す cell-names: 指定したセル“A12”, “C1:E4”に適用
DATA:テーブルのデータセルに適用されます
HEADERS:テーブルの列ヘッダーに適用されます
ROWHEADERS: テーブルの行ヘッダーに適用されます
TABLES: テーブルの列ヘッダー、行ヘッダー、データ全てに適用されます
TEXT: TEXT出力、タイトル、フットノート、プロシージャタイトル、byラインに適用されます
FORMULAS 「=」から始まる値を書式として出力するか ON: ='yyyy/m/d'→yyyy/m/d
OFF: ='yyyy/m/d'→='yyyy/m/d'
FROZEN_HEADERS ウィンドウ枠の固定(行) 数値を指定すると、その行数だけ固定される
FROZEN_ROWHEADERS ウィンドウ枠の固定(列) 数値を指定すると、その列数だけ固定される
GRIDLINES ページ設定/シート/印刷/枠線  
HIDDEN_COLUMNS カラムの非表示 number-listcolumn: カラムを指定する('1,2,4,5-10')
range: 範囲で指定する('1-3' | 'A: C').
HIDDEN_ROWS 行の非表示 number_list_range: 1,2,3-5 | 1: 5 | 1-10
INDEX すべてのシートのインデックスをまとめたシートを作成  
MSG_LEVEL TagSets.ExcelXPにあり、EXCELにないオプションを指定した場合のNOTEメッセージを抑制 NO NOTES: NOTES(EXCELXPオプションXXXはこのExcelタグセットではサポートされません)を出力しない
NO: NOTESを出力する
ORIENTATION 印刷の向き PORTRAIT:  縦
LANDSCAPE:  横
NONE: 設定しない
PAGE_ORDER_ACROSS ページ設定/シート/ページの方向 OFF:  左から右
ON:  上から下
PAGES_FITHEIGHT ページ設定/ページ/拡大縮小印刷/次のページ数に合わせて印刷の縦 指定すると、FITTOPAGE もONになる
NONE: 設定しない
PAGES_FITWIDTH ページ設定/ページ/拡大縮小印刷/次のページ数に合わせて印刷の横 指定すると、FITTOPAGE もONになる
NONE: 設定しない
PRINT_AREA 印刷範囲 a,2,g,20' | 'A2: G20'
カンマ区切りで複数指定できる
PRINT_FOOTER フッターの内容 footnoteステートメントの指定が優先される
PRINT_FOOTER_MARGIN ページ設定/余白/フッター インチで指定したものが、cmに変換されて適用される
数値のみが指定可能で、単位の指定はできない
PRINT_HEADER ヘッダーの内容 titleステートメントの指定が優先される
PRINT_HEADER_MARGIN ページ設定/余白/ヘッダー インチで指定したものが、cmに変換されて適用される
数値のみが指定可能で、単位の指定はできない
PROTECT_WORKSHEET シートを保護するかどうか  
ROWBREAKS_COUNT 改ページを入れる行数  
ROWBREAKS_INTERVAL 特定の場所に改ページを設定 OUTPUT:  アウトプット オブジェクト毎に改ページする
PROC:  プロシージャ毎に改ページする
NONE:  改ページを設定しない
ROWCOLHEADINGS ページ設定/シート/印刷/行列番号  
ROW_HEIGHTS  行の高さ 7種類をカンマ区切りで指定。順に、テーブルヘッダー行、テーブル本体の行、BY行、タイトル行、フッター行、改ページ行、段落スキップの行の高さを指定。0を指定すると、スタイルから高さを取得する。
ABSOLUTE_ROW_HEIGHTと同様、単位付きで指定可能。
ROW_REPEAT ページ設定/シート/印刷タイトル/タイトル行 HEADER:  ヘッダー行をタイトル行に設定
number:  指定行をタイトル行に設定
number-range:  指定範囲行をタイトル行に設定('1-3' | '1: 3')
SCALE ページ設定/ページ/拡大縮小印刷の割合  

SCREEN_RESOLUTION_

SCALE_FACTOR

高解像度ディスプレイでのExcelスプレッドシートの表示を最適化するためのスケール係数 高DPIに対応するため、100、125、150、175等を指定(ディスプレイサイズや解像度によって異なる)
SHEET_INTERVAL シート区切り BYGROUP: byで指定した変数毎にシートを分けます
NONE:  1つのシートに出力します
NOW: 新しいシートに出力します。実行後、前の指定方法に戻ります。
PAGE:  プロシージャの出力毎にシートを分けます
PROC:  プロシージャ毎にシートを分けます
TABLE:  テーブル毎にシートを分けます
SHEET_INTERVAL='NONE'を指定すると、ODSTEXT, ODSLIST プロシージャの PAGEBREAK=YES オプションが無視されます
SHEET_LABEL シート名のルール NONE:  既定の名前が設定されます
text-string:  プリフィクスを指定します
SHEET_NAME シート名 28文字以下
START_AT 出力開始位置 (1,1 | A1)
SUPPRESS_BYLINES BY行を出力するかどうか  
TAB_COLOR シートの色 color | #RRGGBB | rgba(0,100%,0,0.5)

TITLE_FOOTNOTE_

NOBREAK

TITLEとFOOTNOTEをシートに出力する際に、改行表示するかどうか NO:  セル内で折り返し表示する
ON: 折り返さず、セル結合で幅を確保する

TITLE_FOOTNOTE_

WIDTH

指定した数だけ、TITLEとFOOTNOTEのセルを結合する TITLE_FOOTNOTE_NOBREAKがYESのときは無視される
0: 使用しているカラム分だけ結合します
ZOOM ズーム倍率  

 

サブオプションは
ODS EXCEL OPTIONS(SUBOPTIONS) 
という形でカッコの中で指定する必要があります。こちらも複数の場合はスペース区切り。

 

ファイル自体の保護(=パスワード付加)以外は相当なことが(自動処理でも)できそうです。

TAB_COLORで指定できる色については

proc registry list
  startat="COLORNAMES";
run;

で取得するのがいいでしょう。

実行するよりとっとと確認したい方はこちらの記事へどうぞ