2017-06-06 220 views
0

我想在SAS中使用ODS Excel在Excel中準備報表。該報告包含兩張並排放置三張桌子的表格。我使用Panelcol選項,但在ODS Excel中不可用。另外,Start_at =選項似乎不起作用?SAS ODS Excel生成Excel表並排生成Excel表格

無論如何它可以在ODS Excel中完成嗎?請告訴我。 任何幫助將非常感激。

謝謝 桑卡

+0

你能否提供展示你想,這不是什麼工作的一些示例代碼?也許代碼可以在ODS PDF或TAGSETS.EXCELXP中工作,如果這是您更熟悉的?使用SASHELP.CLASS。 – Joe

+0

此外,您還需要包含SAS版本(包括維護版本)(例如,SAS 9.4 TS1M4是我的)。 – Joe

回答

0

尚卡爾:

的start_at =選項不能改變中期片的ODS EXCEL文檔9.4狀態。 Link

(START_AT ='string')指定報告的起始單元格。 默認爲從第1列和第1行開始。默認1,1提示此選項 無法在工作表中間更改。示例ods excel 選項(start_at =「2,2」);

所以這個例子不是如你所期望的那樣工作。第一個start_at被尊重,並且在同一頁面上的後續輸出被堆疊,同時仍然履行列的第一個開始。

ods _all_ close;  
ods excel file='%temp%\3-tables-in-first-tab-sample.xlsx' 
    options (sheet_interval='none') 
; 

ods excel options (start_at="2,2"); 

* top of output is upper left corner; 
proc print noobs data=sashelp.class(keep=name age);run; 

* top of output is to the right and down three rows from the first output; 
ods excel options (start_at="5,5"); 

proc print noobs data=sashelp.class(keep=name weight height);run; 

ods excel options (start_at="1,9"); 
proc print noobs data=sashelp.class(keep=name sex);run; 

ods excel close; 

將多個表放在一起的一種方法是創建一個虛擬表,以橫向方式添加數據。

例子:

%macro RHS_append (out=, data=); 
    %if not %sysfunc(exist(&out)) %then %do; 
    data &out; set &data; run; 
    %return; 
    %end; 

    %local nout names labels; 

    proc contents noprint data=&out out=outvar(keep=name varnum label); 
    proc contents noprint data=&data out=datavar(keep=name varnum label); 
    proc sql noprint; select count(*) into :nout trimmed from outvar; 
    select 
    cats(name,'=v',&nout+varnum+1) 
    , case 
     when label='' 
     then cats('v',&nout+varnum+1,'=',quote(trim(name))) 
     else '' 
    end 
    into 
    :names separated by ' ' 
    , :labels separated by ' ' 
    from datavar order by varnum 
    ; 
    create table gap (v%eval(&nout+1) char(1) label='a0'x); 
    quit; 

    data &out; 
    merge &out gap &data(rename=(&names)); %* rare use of merge without by; 
    label &labels; 
    run; 

%mend; 

options mprint; 

proc delete data=foo; 
run; 
%RHS_append (out=foo, data=sashelp.class); 
%RHS_append (out=foo, data=sashelp.gas); 
%RHS_append (out=foo, data=sashelp.cars); 

ods excel file='%temp%\3-tables-in-first-tab-sample.xlsx'; 

proc print label data=foo; 
run; 

ods excel close;