display pdf in iframe mvc : Save pdf rotate pages SDK application API .net html web page sharepoint 150-20121-part243

11 
Figure 7.  Excel Page Setup Dialog Box Showing Print Header 
and Footer Text 
ADDING AN EXCEL AUTOFILTER TO THE AGE COLUMN 
An Excel AutoFilter enables you to filter, or subset, the data that is being displayed in a worksheet.  A column of data 
containing an AutoFilter is indicated by an arrow button in the header cell of that column.  For example, the "Age" 
column in Figure 1 contains an AutoFilter. 
Suppose that you want to view only records for 15-year old students.  You click the AutoFilter button on the "Age" 
column, and then select "15", as illustrated in Figure 8.  All records in the worksheet that do not have "15" as a value 
in the "Age" column are hidden.  The data is still present in the worksheet, but it is not displayed due to the filtering. 
Use the AUTOFILTER tagset option to add an Excel AutoFilter to the second column of your workbook: 
 Set some "global" tagset options that affect all worksheets; 
ods tagsets.ExcelXP options(embedded_titles='yes' 
embedded_footnotes='yes' 
print_header='&C&A&RPage &P of &N' 
print_footer='&RPrinted &D at &T' 
autofilter='2'); 
You can control which columns have AutoFilters by specifying 'all', 'none', or a range of contiguous columns ('2-4', for 
example). 
Hands-on Workshops
SAS Global Forum 2012
12
2
Save pdf rotate pages - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
how to rotate a pdf page in reader; how to rotate a single page in a pdf document
Save pdf rotate pages - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
pdf rotate single page and save; rotate individual pages in pdf reader
12 
UNDERSTANDING AND USING ODS STYLE OVERRIDES 
You can alter the attributes or style elements used by specific parts of your SAS output by using style overrides.  
These specific parts of your SAS output are called locations Figure 9 shows the locations that are pertinent to the 
PRINT procedure output (SAS Institute Inc. 2008).  The "Header" location controls the appearance of column 
headings and the "Column" location controls the appearance of data cells. 
Style overrides are supported by the PRINT, REPORT, and TABULATE procedures, and can be specified in several 
ways, the two most common formats being: 
 style(location)=[style-attribute-name1=value1 style-attribute-name2=value2 ...] 
 style(location)=style-element-name 
The first format (
) uses individual style attributes defined inline.  For example, the following PROC PRINT code 
alters 3 attributes of the "Header" location for the "myvar" variable: 
var myvar / style(Header)=[background=yellow font_size=10pt just=left]; 
While this is the most commonly used format, it has some disadvantages.  To use the same style override for 
different variables, you must apply it in multiple places, making your SAS code harder to read and maintain.  And, if 
you want to use the style overrides in other SAS programs, you must copy the list of attribute name/value pairs to the 
new code.  Style overrides of this type should be used sparingly. 
The second format (
) overcomes these problems by referencing a style element.  Using this format involves 
creating a new style element, setting the style attributes within the element, and then using the style element name in 
your style override.  This results in code that is easier to read, maintain, and re-use.  Earlier papers by this author 
provide a detailed discussion of this topic (DelGobbo 2008, 2009, 2010, 2011). 
Refer to the ODS documentation for a full listing of style attributes (SAS Institute Inc. 2011b). 
Figure 8.  Column 2 AutoFilter Menu 
Figure 9.  Style Locations for the PRINT Procedure 
Hands-on Workshops
SAS Global Forum 2012
12
2
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
doc.Save(outPutFilePath). How to VB.NET: Delete Consecutive Pages from PDF. This is a VB .NET example for how to delete a range of pages from a PDF document.
pdf page order reverse; how to change page orientation in pdf document
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
doc.DeletePage(2); // Save the file. doc.Save(outPutFilePath); Demo Code: How to Delete Consecutive Pages from PDF in C#.NET. How
pdf rotate page and save; rotate individual pages in pdf
13 
CENTERING THE HEADING TEXT 
Although we could use the inline format of the STYLE option to center the column heading text by specifying the style 
override for each variable, it is easier to use a single style override on the procedure statement to change the 
justification of all column headings: 
ods tagsets.ExcelXP options(sheet_name='Male Students'); 
proc print data=sashelp.class noobs style(Header)=[just=center]; 
where (sex eq 'M'); 
var name age height weight; 
run; quit; 
ods tagsets.ExcelXP options(sheet_name='Female Students'); 
proc print data=sashelp.class noobs style(Header)=[just=center]; 
where (sex eq 'F'); 
var name age height weight; 
run; quit;  
CHANGING BACKGROUND COLORS 
Excel versions 2002 and 2003 have a limited color palette.  Figure 10 shows the default colors.  If you plan to view 
your workbooks using one of these versions of Excel, choose colors that are listed in the default palette.  Otherwise 
Excel maps the unsupported color to a color that is supported.  The color values used in the style overrides are 
indicated by a star (
) in Figure 10. 
Figure 10.  Default Colors Supported by Excel Versions 2002 and 2003 
However, specifying colors is not foolproof.  Because each Excel user can customize the color palette, colors are not 
guaranteed to exist in all instances of Excel. 
Note that Excel versions 2007 and 2010 do not have this restricted color palette. 
Hands-on Workshops
SAS Global Forum 2012
12
2
C# PDF Page Insert Library: insert pages into PDF file in C#.net
how to merge PDF document files by C# code, how to rotate PDF document page doc2.Save(outPutFilePath Add and Insert Multiple PDF Pages to PDF Document Using
how to permanently rotate pdf pages; rotate pdf pages
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Able to extract PDF pages and save changes to original PDF file in C#.NET. C#.NET Sample Code: Extract PDF Pages and Save into a New PDF File in C#.NET.
rotate all pages in pdf and save; pdf reverse page order
14 
To apply one ODS style override to the "name" and "age" columns, and later, a different style override the "height" 
and "weight" columns, we need to split the single VAR statements into 2 separate statements.  Style overrides are 
applied to the "Column" location of each variable to change the background color of the data cells. 
ods tagsets.ExcelXP options(sheet_name='Male Students'); 
proc print data=sashelp.class noobs style(Header)=[just=center]; 
where (sex eq 'M'); 
var name age      / style(Column)=[background=#99ccff]; 
var height weight / style(Column)=[background=#99ccff]; 
run; quit; 
ods tagsets.ExcelXP options(sheet_name='Female Students'); 
proc print data=sashelp.class noobs style(Header)=[just=center]; 
where (sex eq 'F'); 
var name age      / style(Column)=[background=#ff99cc]; 
var height weight / style(Column)=[background=#ff99cc]; 
run; quit;  
SPECIFYING AN EXCEL NUMBER FORMAT FOR HEIGHT AND WEIGHT 
Our Excel workbook now closely resembles Figure 1, except that one decimal place is not always used for the height 
and weight data.  You could sometimes have success using SAS formats to control the Excel display values, but it is 
usually better to instead use Excel formats. 
The pound sign (#) in an Excel format is used to represent a numeric digit, excluding insignificant zeros, and a zero 
(0) displays a numeric digit including insignificant zeros.  Use zeros in Excel formats when you want to retain leading 
or trailing zeros.  Figure 11 shows the general structure of Excel formats (Microsoft Corporation 2012a).  
Figure 11.  Structure of Excel Number Formats 
Table 2 shows the results of applying the Excel format shown in Figure 11. 
Raw Value 
Formatted Value 
Comment 
.5 
0.50 
Leading & Trailing Zeros 
5.00 
Leading & Trailing Zeros 
123 
123.00 
Trailing Zeros 
1234 
1,234.00 
Trailing Zeros, Thousands Separator 
-1234 
(1,234.00) 
Leading & Trailing Zeros, Thousands Separator, Red () 
0.00 
Special Zero Handling 
Data 
sales data 
Special Text Handling 
Table 2.  Results of Applying Excel Format Shown in Figure 11 
Hands-on Workshops
SAS Global Forum 2012
12
2
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
outPutFilePath As String = Program.RootPath + "\\" Output.pdf" Dim doc1 doc2.InsertPages(pages, pageIndex) ' Output the new document doc2.Save(outPutFilePath
pdf rotate one page; how to rotate one pdf page
How to C#: Rotate Image according to Specified angle
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET PowerPoint, VB.NET Tiff, VB Steps to Rotate image. Save the rotated image to an image file on the disk
pdf save rotated pages; rotate pages in pdf expert
15 
Because we are working only with positive values, we use the Excel format 
#.0
with the ODS "tagattr" attribute to 
specify an Excel format.  Be sure to quote the entire attribute value and include the "format:" keyword: 
ods tagsets.ExcelXP options(sheet_name='Male Students'); 
proc print data=sashelp.class noobs style(Header)=[just=center]; 
where (sex eq 'M'); 
var name age      / style(Column)=[background=#99ccff]; 
var height weight / style(Column)=[background=#99ccff tagattr='format:#.0']; 
run; quit; 
ods tagsets.ExcelXP options(sheet_name='Female Students'); 
proc print data=sashelp.class noobs style(Header)=[just=center]; 
where (sex eq 'F'); 
var name age      / style(Column)=[background=#ff99cc]; 
var height weight / style(Column)=[background=#ff99cc tagattr='format:#.0']; 
run; quit; 
With all the code modifications in place, the resulting workbook matches the output shown in Figure 1. 
THE FINAL SAS CODE 
The final SAS code to create the output of Figure 1 follows: 
ods _all_ close; 
ods tagsets.ExcelXP path='output-directory' file='MyWorkbook.xml' 
style=Printer; 
title 'The CLASS Data Set'; 
footnote '(From the SASHELP Library)'; 
 Set some "global" tagset options that affect all worksheets; 
ods tagsets.ExcelXP options(embedded_titles='yes' 
embedded_footnotes='yes' 
print_header='&C&A&RPage &P of &N' 
print_footer='&RPrinted &D at &T' 
autofilter='2'); 
ods tagsets.ExcelXP options(sheet_name='Male Students'); 
proc print data=sashelp.class noobs style(Header)=[just=center]; 
where (sex eq 'M'); 
var name age      / style(Column)=[background=#99ccff]; 
var height weight / style(Column)=[background=#99ccff tagattr='format:#.0']; 
run; quit; 
ods tagsets.ExcelXP options(sheet_name='Female Students'); 
proc print data=sashelp.class noobs style(Header)=[just=center]; 
where (sex eq 'F'); 
var name age      / style(Column)=[background=#ff99cc]; 
var height weight / style(Column)=[background=#ff99cc tagattr='format:#.0']; 
run; quit; 
ods tagsets.ExcelXP close; 
Hands-on Workshops
SAS Global Forum 2012
12
2
How to C#: Basic SDK Concept of XDoc.PDF for .NET
example, you may easily create, load, combine, and split PDF file(s), and add, create, insert, delete, re-order, copy, paste, cut, rotate, and save PDF page(s
change orientation of pdf page; how to save a pdf after rotating pages
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
key. Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word without losing format. Powerful components
rotate all pages in pdf; pdf rotate all pages
16 
SAS SERVER TECHNOLOGY 
You can incorporate dynamically-generated SAS output into Excel using the Application Dispatcher or the SAS
®
Stored Process Server.  The Application Dispatcher is part of SAS/IntrNet
®
software. The SAS Stored Process Server 
is available starting with SAS
®
9 as part of SAS
®
Integration Technologies, and is included with server offerings that 
leverage the SAS Business Analytics infrastructure (for example, SAS
®
BI Server and SAS
®
Enterprise BI Server). 
These products enable you to execute SAS programs from a Web browser or any other client that can open an HTTP 
connection to the Application Dispatcher or the SAS Stored Process Server.  Both of these products can run on any 
platform where SAS is licensed.  SAS software does not need to be installed on the client machine. 
The SAS programs that you execute from the browser can contain any combination of DATA Step, procedure, macro, 
or SCL code.  Thus, all of the code that has been shown up to this point can be executed by both the Application 
Dispatcher and the SAS Stored Process Server. 
Program execution is typically initiated by accessing a URL that points to the SAS server program.  Parameters are 
passed to the program as name/value pairs in the URL.  The SAS server takes these name/value pairs and 
constructs SAS macro variables that are available to the SAS program. 
Figure 12 shows a Web page that can deliver SAS output directly to Excel, using a Web browser as the client.   
Figure 12.  Web Page to Drive a SAS/IntrNet Application 
Clicking Download to Excel executes a slightly modified version of the SAS code that we have been working on.  
The modifications are as follows: 
%let RV=%sysfunc(appsrv_header(Content-type,application/vnd.ms-excel)); 
%let RV=%sysfunc(appsrv_header(Content-disposition,attachment; filename= 
"StudentData.xml"));  * Ignore line wrapping; 
ods listing close; 
Hands-on Workshops
SAS Global Forum 2012
12
2
17 
ods tagsets.ExcelXP file=_webout style=Printer; 
*  Remainder of the "final" SAS code; 
ods tagsets.ExcelXP close; 
The first APPSRV_HEADER function sets a MIME header that causes the SAS output to be opened by Excel, 
instead of being rendered by the Web browser.  This statement is required. 
The second APPSRV_HEADER function sets a MIME header that causes the file name to be displayed in the "File 
Download" dialog box.  As you can see in Figure 13, the file name appears as "StudentData.xml".  This header might 
cause problems with some versions of Excel, so be sure to test your applications before deploying them in a 
production environment.  This statement is optional. 
Figure 13.  File Download Dialog Box 
The reserved fileref _WEBOUT is automatically defined by the SAS server and is always used to direct output from 
the SAS server to the client.  Modify your existing ODS statement to direct the output to this fileref instead of to an 
external disk file. 
When you click the Download to Excel button on the Web page and are presented with the "File Download" dialog 
box (Figure 13), you can click Open to immediately open your SAS output using Excel, or click Save to save a copy 
for later use. 
This is just one example of how you can dynamically deliver SAS output to Excel.  For more detailed information and 
other examples, see the SAS/IntrNet Application Dispatcher and SAS Stored Process documentation (SAS Institute 
Inc. 2011a, 2011c), as well as this author's earlier papers (DelGobbo 2002, 2003, 2004). 
CONCLUSION 
The SAS
®
9 ExcelXP ODS tagset provides an easy way to export your SAS data to Excel workbooks that contain 
multiple worksheets.  By using ODS styles, style overrides, and a tagset that complies with the Microsoft XML 
Spreadsheet Specification, you can customize the output to achieve your design goals. 
APPENDIX 
DIAGNOSING EXCEL LOAD ERRORS  
When you open a malformed XML file using Excel, you are presented with an error dialog box containing a message 
like this: 
This file cannot be opened because of errors. Errors are listed in: C:\Documents 
and Settings\userid\Local Settings\Temporary Internet 
Files\Content.MSO\404A54C0.log. 
On most systems, the log file created by Excel is stored in a hidden directory, so you cannot navigate to it using 
Microsoft Windows Explorer.  You can, however, navigate to the directory from a command prompt (cmd.exe) by 
entering this text and pressing the ENTER key (ignore the line wrapping): 
%SYSTEMROOT%\explorer.exe /e, "%USERPROFILE%\Local Settings\Temporary Internet 
Files\Content.MSO" 
Malformed XML is sometimes created because of an invalid value specified for the "tagattr" attribute.  For example, 
Excel formats have limited color support (Microsoft 2012a), and specifying an unsupported color causes the problem: 
var height / style(Column)={tagattr='format:[Orange]#.0'}; 
Hands-on Workshops
SAS Global Forum 2012
12
2
18 
The Excel log file contains the following information, indicating that there is an invalid value for the "Format" attribute 
of the "NumberFormat" tag: 
XML ERROR in Style 
REASON: 
Bad Value 
FILE: 
C:\HOW\DelGobbo\MyWorkbook.xml 
GROUP: 
Style 
TAG: 
NumberFormat 
ATTRIB: 
Format 
VALUE: 
[Orange]#.0 
Misspelling a style element name or specifying a style element that is not part of the style definition can cause 
malformed XML.  For example, if the "data_bold" style element exists in the user-defined "MyStyle" style, but you 
misspell it as "date_bold": 
ods tagsets.ExcelXP file='MyWorkbook.xml' style=MyStyle ...; 
... 
define MyVar / display order style(Column)=date_bold; 
... 
ods tagsets.ExcelXP close; 
Here is an example of the second case, where the "data_bold" style element is spelled correctly, but it is not defined 
in the "Printer" style that is supplied by SAS.  The style element exists in the user-defined "XLPrinter" style, but you 
forgot to change the style name from "Printer" to "XLPrinter": 
ods tagsets.ExcelXP file='MyWorkbook.xml' style=Printer ...; 
... 
define MyVar / display order style(Column)=data_bold; 
... 
ods tagsets.ExcelXP close; 
In both cases, the Excel log file indicates that "unknown" is an invalid value for the "StyleID" attribute of the "Cell" tag: 
XML ERROR in Table 
REASON: Bad Value 
FILE: C:\HOW\DelGobbo\MyWorkbook.xml 
GROUP:  Row 
TAG:  Cell 
ATTRIB: StyleID 
VALUE:  unknown 
If you open the file "MyWorkbook.xml" using a text editor, you will see instances of the incorrect value being used: 
<Cell ss:StyleID="unknown" ... > 
VISUAL BASIC CODE TO CONVERT XML TO NATIVE EXCEL FORMATS  
The author is developing a Visual Basic script that converts ExcelXP-generated files to native Excel xls or xlsx 
formats.  Contact the author if you would like a copy of this experimental code. 
Hands-on Workshops
SAS Global Forum 2012
12
2
19 
REFERENCES 
DelGobbo, Vincent. 2002. "Techniques for SAS
®
Enabling Microsoft
®
Office in a Cross-Platform Environment".  
Proceedings of the Twenty-Seventh Annual SAS Users Group International Conference. Cary, NC: SAS Institute Inc.  
Available at http://www2.sas.com/proceedings/sugi27/p174-27.pdf
DelGobbo, Vincent. 2003. "A Beginner’s Guide to Incorporating SAS
®
Output in Microsoft
®
Office Applications".  
Proceedings of the Twenty-Eighth Annual SAS Users Group International Conference. Cary, NC: SAS Institute Inc.  
Available at http://www2.sas.com/proceedings/sugi28/052-28.pdf
DelGobbo, Vincent. 2004. "From SAS
®
to Excel via XML". 
Available at http://support.sas.com/rnd/papers/sugi29/ExcelXML.pdf
DelGobbo, Vincent. 2008. "Tips and Tricks for Creating Multi-Sheet Microsoft Excel Workbooks the Easy Way with 
SAS
®
". Proceedings of the SAS Global Forum 2008 Conference. Cary, NC: SAS Institute Inc. 
Available at http://www2.sas.com/proceedings/forum2008/192-2008.pdf
DelGobbo, Vincent. 2009. "More Tips and Tricks for Creating Multi-Sheet Microsoft Excel Workbooks the Easy Way 
with SAS
®
". Proceedings of the SAS Global Forum 2009 Conference. Cary, NC: SAS Institute Inc. 
Available at http://support.sas.com/resources/papers/proceedings09/152-2009.pdf
DelGobbo, Vincent. 2010. "Traffic Lighting Your Multi-Sheet Microsoft Excel Workbooks the Easy Way with SAS
®
". 
Proceedings of the SAS Global Forum 2010 Conference. Cary, NC: SAS Institute Inc. 
Available at http://support.sas.com/resources/papers/proceedings10/153-2010.pdf
DelGobbo, Vincent. 2011. "Creating Stylish Multi-Sheet Microsoft Excel Workbooks the Easy Way with SAS
®
". 
Proceedings of the SAS Global Forum 2011 Conference. Cary, NC: SAS Institute Inc. 
Available at http://support.sas.com/resources/papers/proceedings11/170-2011.pdf
Microsoft Corporation. 2001. "XML Spreadsheet Reference".   
Available at http://msdn2.microsoft.com/en-us/library/aa140066(office.10).aspx
Microsoft Corporation. 2012a. "Create of delete a custom number format". 
Available at http://office.microsoft.com/assistance/hfws.aspx?AssetID=HP051995001033
Microsoft Corporation. 2012b. "When you open a file in Excel 2007, you receive a warning that the file format differs 
from the format that the file name extension specifies".  Available at http://support.microsoft.com/kb/948615.  
SAS Institute Inc. 2008. "SAS
®
9 Reporting Procedure Styles Tip Sheet".   
Available at http://support.sas.com/rnd/base/ods/scratch/reporting-styles-tips.pdf
SAS Institute Inc. 2009. "Sample 36900: Instructions for viewing all of the style templates that are shipped with the 
SAS
®
System".  Available at http://support.sas.com/kb/36/900.html.  
SAS Institute Inc. 2011a. SAS/IntrNet
®
9.3: Application Dispatcher. Cary, NC: SAS Institute Inc. 
Available at 
http://support.sas.com/documentation/cdl/en/dispatch/62562/HTML/default/viewer.htm#p06h82ux8glu1pn16k9dxw8tj
pyz.htm 
SAS Institute Inc. 2011b. SAS
®
9.3 Output Delivery System User: User's Guide. Cary, NC: SAS Institute Inc. 
Available at 
http://support.sas.com/documentation/cdl/en/odsug/62755/HTML/default/viewer.htm#p15bfjqgegjal0n1j3ze57yaqljr.ht
m
SAS Institute Inc. 2011c. SAS
®
9.3 Stored Processes: Developer's Guide. Cary, NC: SAS Institute Inc. 
Available at http://support.sas.com/documentation/cdl/en/stpug/62758/HTML/default/viewer.htm#titlepage.htm 
SAS Institute Inc. 2011d. "Uses of the Results Window". SAS
®
9.3 Language Reference: Concepts. Cary, NC: SAS 
Institute Inc.  Available at 
http://support.sas.com/documentation/cdl/en/lrcon/62753/HTML/default/viewer.htm#n1039zk8bk9aton1fmbm7z2wji3k
.htm
Hands-on Workshops
SAS Global Forum 2012
12
2
20 
SAS Institute Inc. 2012. "ODS MARKUP Resources".   
Available at http://support.sas.com/rnd/base/topics/odsmarkup/
ACKNOWLEDGEMENTS 
The author would like to thank Chris Barrett of SAS Institute Inc. for his valuable contributions to this paper.  
RECOMMENDED READING 
DelGobbo, Vincent. 2012. "Vince DelGobbo's ExcelXP Tagset Paper Index". 
Available at http://www.sas.com/events/cm/867226/ExcelXPPaperIndex.pdf
SAS Institute Inc. 2012. "Quick Reference for the TAGSETS.EXCELXP Tagset". 
Available at http://support.sas.com/rnd/base/ods/odsmarkup/excelxp_help.html 
CONTACT INFORMATION 
Your comments and questions are valued and encouraged.  Contact the author at: 
Vincent DelGobbo 
SAS Institute Inc. 
SAS Campus Drive 
Cary, NC 27513 
sasvcd@SAS.com 
http://www.sas.com/reg/gen/corp/867226?page=Resources 
If your registered in-house or local SAS users group would like to request this presentation as your annual SAS 
presentation (as a seminar, talk, or workshop) at an upcoming meeting, please submit an online User Group Request 
Form (from support.sas.com/sasusersupport/usergroups/support) at least eight weeks in advance. 
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS 
Institute Inc. in the USA and other countries. ® indicates USA registration.  
Other brand and product names are trademarks of their respective companies. 
Hands-on Workshops
SAS Global Forum 2012
12
2
Documents you may be interested
Documents you may be interested