38
Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace ([email protected]) Washington State University View Presentation at http://www.ir.wsu.edu/

Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace ([email protected]) Washington State University

  • View
    219

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Get Fancy Department Level

Reports Using SAS ExcelXP Tagset

2008 AIR Forum

Seattle, Washington

Ray Wallace ([email protected])

Washington State University

View Presentation at

http://www.ir.wsu.edu/

Page 2: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Presentation Overview

• SAS Tagsets (Excel features from SAS)

• Style (Get it to look right)

• Department Looping (Macros)

Page 3: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

What is a Tagset?

• Adds ‘tags’ to output using ODS

• Ex. HTML tag: <body>Put Body of Web Page Here</body>

• ExcelXP tagset uses xml tags, Ex.

<Row><Cell><Data> data in the

cell</Data></Cell></Row>

• 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

Page 4: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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

Page 5: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

How Does A Tagset Work?

A Tagset is just another ODS destination.

E.g.,

• listing

• html

• pdf

• Tagsets (such as ExcelXP)

Page 6: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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;

Page 7: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Get A List Of The Available Tagsets

proc template;list tagsets;run;

User-defined tagsets will be located in SASUSER.TEMPLAT.User-defined tagsets will be located in SASUSER.TEMPLAT.Tagsets provided by SAS are in SASHELP.TMPLMSTTagsets provided by SAS are in SASHELP.TMPLMST

Page 8: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

How Does Style Work?

Works with the ODS

Define with proc template

When issuing an ODS command style is impliedEx:

ods tagsets.excelxp file = ‘foo.xls’; is the same as

ods tagsets.excelxp file = ‘foo.xls’ style = default;

Page 9: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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

Page 10: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Make Your Own Style

Find a style you like then ‘tweek’ it a little.

proc template; source styles.default; run;

Page 11: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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 Element

Inheritance

Page 12: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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

Page 13: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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 ;

Page 14: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

ExcelXP Options

Determine the zoom level on the worksheetods tagsets.excelxp options (zoom=’88’) ;

‘100’ is the default

Page 15: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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’

Page 16: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

ExcelXP Options

Create a sheet which has links names of all other worksheets. ods tagsets.excelxp options(index=‘yes’);

Page 17: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

ExcelXP Options

Name the worksheetsods tagsets.excelxp options (sheet_name=‘Overview Data’)

Could use a macro var“&dept”

Page 18: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

ExcelXP Options

When to create a new sheetods tagsets.excelxp options (sheet_interval=’proc’) ;

‘Table’ is the default

Also use ‘page’, ‘ bygroup’, ‘proc’, ‘none’

Page 19: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

ExcelXP Options

Format the page for printing ods tagsets.excelxp options (orientation=‘landscape’);

Page 20: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

ExcelXP Options

Tells Excel the width of each columnods tagsets.excelxp options (default_Column_Width=‘12,9,6,6,6,6,6,8’);

Page 21: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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’

Page 22: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Using Style

Using proc format with Excel comments

First…proc format ;value $subjdesc

‘MATH’=‘Mathematics’‘GENED’=‘General Education’

...more subject formats... ;

• Then…

Page 23: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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’}

Page 24: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Three Levels of Style Hierarchy

1. Document level (ods statement)

ods tagsets.ExcelXP file = “c:\Report for &dept..xls”style=irstyle_xl;

Page 25: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Three Levels of Style Hierarchy

2. Procedure level (proc report statement)

proc report data=sashelp.classstyle(header)={font_weight=bold};

Page 26: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Three Levels of Style Hierarchy

3a. Variable level – e.g., define statement under proc report.

define taught_to / group style(column)={flyover=$ownother.};

Page 27: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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;

Page 28: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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}

Page 29: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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)

Page 30: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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_xloptions (sheet interval=‘proc’

sheet_name=‘First dept report’);

Page 31: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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’

Page 32: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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;

Page 33: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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’);

Page 34: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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;

Page 35: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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)

Page 36: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

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 youdata _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" ;

Page 37: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

Question?

Contact me at…Ray Wallace ([email protected])

Washington State University

View Presentation at

http://www.ir.wsu.edu/

Page 38: Get Fancy Department Level Reports Using SAS ExcelXP Tagset 2008 AIR Forum Seattle, Washington Ray Wallace (rwallace@wsu.edu) Washington State University

ResourcesSAS-L newsgroupSAS emits SAS tech support

Tagset Linkshttp://support.sas.com/events/sasglobalforum/index.htmlhttp://support.sas.com/rnd/base/ods/odsmarkup/

Style Linkshttp://www.laurenhaworth.com/publications/195-28.pdfhttp://www.laurenhaworth.com/publications/132-30.pdfhttp://www.guptaprogramming.com/images/ODS_Custom.pdf