Download presentation
Presentation is loading. Please wait.
1
Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University View Presentation at http://www.ir.wsu.edu/
2
Presentation Overview SAS Tagsets (Excel features from SAS) Style (Get it to look right) Department Looping (Macros)
3
What is a Tagset? Adds ‘tags’ to output using ODS Ex. HTML tag: Put Body of Web Page Here ExcelXP tagset uses xml tags, Ex. data in the cell Developed by Eric Gebhart from SAS Get the latest tagset code http://support.sas.com/rnd/base/ods/odsmarkup/index.html New version 1.86 available as of April 2008
4
Install the Latest Tagset Download the latest version from support.sas.com Save the *.tpl file Open the *.tpl file in SAS Run it ExcelXP Tagset Code
5
How Does A Tagset Work? A Tagset is just another ODS destination. E.g., listing html pdf Tagsets (such as ExcelXP)
6
How Does A Tagset Work? Things you can do to an ODS Destination Open ods tagsets.ExcelXP file=‘foo.xls’; Manage ods tagsets.ExcelXP options(embedded_titles=‘yes’); Close ods tagsets.ExcelXP close;
7
Get A List Of The Available Tagsets proc template; list tagsets; run; User-defined tagsets will be located in SASUSER.TEMPLAT. Tagsets provided by SAS are in SASHELP.TMPLMST
8
How Does Style Work? Works with the ODS Define with proc template When issuing an ODS command style is implied Ex: ods tagsets.excelxp file = ‘foo.xls’; is the same as ods tagsets.excelxp file = ‘foo.xls’ style = default;
9
Get A List Of The Styles You Have proc template; list styles; run; Just like tagsets… User-defined styles will be in SASUSER.TEMPLAT Styles provided by SAS are in SASHELP.TMPLMST
10
Make Your Own Style Find a style you like then ‘tweek’ it a little. proc template; source styles.default; run;
11
Easy To Create Your Own Style Use inheritance then add your own twists proc template; define style irstyle_xl; parent = styles.default; style systemtitle from systemtitle / background=white foreground=cx990033 end; Style ElementInheritance
12
Building a Report Department Level Accreditation Data Want a consolidated and concise report of information from various topic areas Display multiple years of data Easy for users to read Familiar format (Excel) Metadata/data definitions Extensible (able to add reports easily) Printable
13
ExcelXP Options Over 60 options and controls allow SAS to control Excel. Including… Table of Contents/Index Customizing column widths Zooming Header / footer control Excel comments Repeat cells Sheet naming Page orientation Get Documentation: ods Tagsets.ExcelXP file = "c:\test.xls” options (doc='help') ; ods tagsets.Excelxp close ;
14
ExcelXP Options Determine the zoom level on the worksheet ods tagsets.excelxp options (zoom=’88’) ; ‘100’ is the default
15
ExcelXP Options Repeat header row on each page for printing ods tagsets.excelxp options(row_repeat=‘header’); Also Use these options ‘none’ -default ‘1-3’ ‘5’
16
ExcelXP Options Create a sheet which has links names of all other worksheets. ods tagsets.excelxp options(index=‘yes’);
17
ExcelXP Options Name the worksheets ods tagsets.excelxp options (sheet_name=‘Overview Data’) Could use a macro var “&dept”
18
ExcelXP Options When to create a new sheet ods tagsets.excelxp options (sheet_interval=’proc’) ; ‘Table’ is the default Also use ‘page’, ‘ bygroup’, ‘proc’, ‘none’
19
ExcelXP Options Format the page for printing ods tagsets.excelxp options (orientation=‘landscape’);
20
ExcelXP Options Tells Excel the width of each column ods tagsets.excelxp options (default_Column_Width=‘12,9,6,6,6,6,6,8’);
21
ExcelXP Style Options Use the currency format from Excel. In the proc report, proc print etc. define fy2003 / analysis style(column)={tagattr="format:$#,##0_);[Red]($#,##0)"}; Others: ‘format:##0.0%’ ‘format:##0.00’
22
Using Style Using proc format with Excel comments First… proc format ; value $subjdesc ‘MATH’=‘Mathematics’ ‘GENED’=‘General Education’...more subject formats... ; Then…
23
ExcelXP Style Options Print comments in the appropriate cells down the column define prefix / group ‘Prefix‘ style(column)={flyover=$subjdesc.} ; Or explicitly define {fylover=‘Hello World’}
24
Three Levels of Style Hierarchy 1.Document level (ods statement) ods tagsets.ExcelXP file = “c:\Report for &dept..xls” style=irstyle_xl;
25
Three Levels of Style Hierarchy 2.Procedure level (proc report statement) proc report data=sashelp.class style(header)={font_weight=bold};
26
Three Levels of Style Hierarchy 3a. Variable level – e.g., define statement under proc report. define taught_to / group style(column)={flyover=$ownother.};
27
Three Levels of Style Hierarchy 3b. Variable level - break and rbreak statement in proc report rbreak after / ol summarize style(summary)=Total; Total is a style element defined in the irstyle_xl. style total from summary / flyover = ‘’ font_style = italic;
28
Two Levels of Style Specificity Two levels of specificity 1.Style definition reference style(header)=hrheader (predefined in irstyle_xl) 2.Direct style(column)={font_size=2}
29
Macro Looping To have your program create an Excel file for each academic department… Use a macro! %macro deptloop(dept); …SAS CODE… %mend deptloop; %deptloop(CHEM)
30
Macro Looping What goes in the …SAS CODE… portion of the program? First open the ODS destination and manage options for the first report. ods tagsets.ExcelXP file = “c:\Report for &dept..xls” style=irstyle_xl options (sheet interval=‘proc’ sheet_name=‘First dept report’);
31
Macro Looping What goes in the …SAS CODE… portion of the program? Then maybe some traffic lighting… proc format; value traffic low - <10= ‘red’ 10 - <50= ‘yellow’ 50 - high = ‘green’
32
Macro Looping What goes in the …SAS CODE… portion of the program? Now, the first report using proc print. proc print data = deptreport1 ; var subject / style(column)={flyover=$subjdesc.}; var headcount / style(header)={background=cxD99795} style(column)={background=traffic.}; where dept = “&dept”; run;
33
Macro Looping What goes in the …SAS CODE… portion of the program? Use ExcelXP options again for the next report ods tagsets.ExcelXP options(sheet_name=‘Second Dept Report‘ default_Column_Width=’12,6,6,6,6,6’); frozen_header=‘2’ );
34
Macro Looping What goes in the …SAS CODE… portion of the program? Write the second report. proc report data = deptreport2 nowd missing ; column subject acad_year, fte; define subject/ group ‘Course Subject’; define acad_year / across ‘AY’ define fte /analysis sum ‘FTE’ style(column)= {tagattr="format:##0.0“} ; where dept = “&dept”; run;
35
Macro Looping What goes in the …SAS CODE… portion of the program? Now finish it up. ods tagsets.ExcelXP close; This closes the ODS and finishes creating the Excel file. Then the macro must end and... %mend deptloop; SAS must call the macro for the code to actually run. %deptloop(CHEM)
36
Macro Looping What if you have 100+ department and don’t want to write 100+ %deptloop() macro calls? create macro var for a percent sign %let pctsign=%str(%); This will write all your macro calls for you data _null_ ; set dept_list ; end = lastobs; file "c:\call the macro program.txt"; put "&pctsign" "deptloop (" dept +(1*-1) ")" ; run; This will run all your macro calls for you %include "c:\ call the macro program.txt" ;
37
Question? Contact me at… Ray Wallace (rwallace@wsu.edu) Washington State University View Presentation at http://www.ir.wsu.edu/
38
Resources SAS-L newsgroup SAS emits SAS tech support Tagset Links http://support.sas.com/events/sasglobalforum/index.html http://support.sas.com/rnd/base/ods/odsmarkup/ Style Links http://www.laurenhaworth.com/publications/195-28.pdf http://www.laurenhaworth.com/publications/132-30.pdf http://www.guptaprogramming.com/images/ODS_Custom.pdf
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.