2013-12-19 56 views
2

我想要打印到PDF的一些數據集。任何人都可以告訴我,如何將最後的4個proc print語句合併到單個頁面上的2 x 2中,而將第一個語句留在自己的頁面上(就像現在這樣)?sas ods列 - 使「日記樣式」文件

title; 

options nodate nonumber nocenter orientation=portrait spool; 

ods pdf file="I:\ASR\201410\bio.pdf" color=yes style=fancyprinter; 

ods pdf startpage=NEVER; 

ods escapechar=''; 

ods pdf text='S={just=CENTER preimage="I:/asr/logo.png" posttext=""'; 

ods pdf text= "S={just=c font_weight=bold font_size=12pt font_face=Arial}Fall 2013 - Annual Statistical Report"; 

ods pdf text= "S={just=c font_weight=bold font_size=12pt font_face=Arial}Department of Biology"; 

proc print data=IntApps_AY_cnt_p noobs; TITLE "Applications"; run; 

ods pdf startpage=now; 

proc print data=enroll_cnts_np noobs; TITLE "New Student Enrollment"; run; 

ods pdf startpage=now; 

proc print data=enroll_cnts_p noobs; TITLE "Total Enrollment"; run; 

ods pdf startpage=now; 

proc print data=TuitionScholarships_cnt_p noobs; TITLE "Stipends"; run; 

ods pdf startpage=now; 

proc print data=asr_degs_cnts_p noobs; TITLE "Academic Year 2012-2013 Awarded Degrees"; run; 

ods layout end; 

ods all close; 

感謝

JT

+0

尺寸爲2 x 2的測量是什麼? –

+0

什麼都沒有具體 - 只要他們在頁面上。這些打印出來的數據集不會很大,我也想包含一些文本。 – user1624577

回答

1

使用columns=N選項ODS劃分頁面分成N列。嘗試操縱列數以適合您的數據集。然後使用startpage=nostartpage=now來幫助您在所需位置輸出您的print語句。

SAS將每個列視爲一個新頁面,因此您可以利用此功能將多個print語句輸出合併到一個頁面中。

例使用2列:

options nodate nonumber; 
data work.animals; 
    input name $ weight; 
    datalines; 
    monkey 20 
    shark 500 
    lion 200 
    wolf 120 
    buffalo 400 
    Parrot 10 
    Lizard 30 
    Human 150 
    Whale 1000 
    ; 
run; 

ods pdf file = 'C:\sasdata\animals2.pdf' columns = 2; 

ods pdf startpage=no; 
proc print data=work.animals; /* This print will be on a seperate page */ 
    title 'Seperate Paged Animals'; 
run; 
ods pdf startpage=now; 
ods pdf text="I want a little paragraph here that explains things about 
columns and startpages for putting this proc print statement on a 
seperate page. The other four statements will be outputed 
onto one page only divided into two columns."; 

ods pdf startpage=now; 
title; 
proc print data=work.animals; /* 2nd print*/ 
run; 

proc print data=work.animals; /*3rd print*/ 
run; 

ods pdf startpage=now; 

proc print data=work.animals; /*4th print*/ 
run; 

proc print data=work.animals; /*5th print*/ 
run; 

ods pdf close; 
ods listing; 

當我們鍵入startpage=now,它只會去一個新的列,而不是一個新的頁面。因此,第一個print聲明和文本段落將在單獨的頁面上。最後四個print報表將在一頁上。

+0

有沒有辦法做到這一點,使第一頁只有一列,但其他頁面是2列?它似乎是: ods pdf file ='C:\ sasdata \ animals2.pdf'columns = 2; 將應用於整個文檔,而不僅僅是第二頁。我看過一些ODS地區的東西,但我並沒有真正關注,也沒有得到我期望的結果。 – user1624577

+0

@ user1624577您可以在不使用列的情況下將第一個打印語句輸出到具有不同名稱的單獨的pdf文件(即,另一個「ods pdf file =')。然後將這兩個pdf文件合併到一起使用:http://foxyutils.com/mergepdf/(您可以在下載文件後) –

+0

@ user1624577 pdf合併工作還是會導致一些問題?乾杯。 –

1

我認爲你可能需要使用ODS LAYOUT來實現這一點。如果您擁有SAS 9.4,您可能還會考慮學習PROC ODSTABLE或其他PROC DOCUMENT相關特效(請參閱this doc page瞭解更多詳情)。 ODS LAYOUT解決方案將在SAS 9.3+中運行,並可能在SAS 9.2中運行,但我認爲當時它非常生鏽。

基本的代碼會是這樣的

ods pdf file="c:\temp\blah.pdf"; 
proc print data=sashelp.class; 
run; 
ods pdf startpage=now; 
ods layout start columns=2; 
ods region; 
proc print data=sashelp.class; 
run; 
ods region; 
proc print data=sashelp.class; 
run; 
ods region; 
proc print data=sashelp.class; 
run; 
ods region; 
proc print data=sashelp.class; 
run; 
ods layout end; 
ods pdf close; 

你得到2列這樣。您仍然必須通過使事物不太大來控制行;如果這是一個問題,您可以控制ods region語句(ods region height=4in)上各個區域的高度/寬度,但這可能會導致結果中出現問題,也可能不會導致問題,因爲只有一些SAS輸出會縮放輸出以適合空間。

更多信息可在You Did That Report in SAS®!?: The Power of the ODS PDF Destination找到。