asp. net mvc pdf viewer : Batch pdf to jpg converter SDK application API wpf html azure sharepoint Global-SAS-Forum-Create-an-Excel-Report-Using-SAS0-part1802

   
Creating an Excel report: A comparison of the different techniques 
‐1‐
 
 
Create an Excel report using SAS®: A 
comparison of the different techniques  
 
Romain Miralles, Clinovo, Sunnyvale, CA 
 
Global SAS Forum 2011 
April 2011 
 
 
Batch pdf to jpg converter - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
change file from pdf to jpg; bulk pdf to jpg converter online
Batch pdf to jpg converter - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
change pdf to jpg on; changing pdf to jpg file
   
Creating an Excel report: A comparison of the different techniques 
‐2‐
 
 
1. ABSTRACT 
 
 
Many techniques exist to create an Excel file using SAS®. Each of them offers some unique advantages. 
 
LIBNAME statement is a new and useful option available with SAS 9 but old methods like DDE are still 
very powerful and offer some unique capabilities. Knowing and understanding the different techniques 
is essential for SAS programmers to quickly and effectively produce a report that will meet the 
requirement provided by the customer. 
 
This paper will list and describe the different techniques to generate an Excel file from SAS, and provide 
recommendations on the appropriate method to use when an Excel output must be created. 
 
2. INTRODUCTION  
 
Programming an Excel report is a common task for most SAS programmers. Customers often want to be 
able to view, sort, and filter their data, and Excel is usually the tool they master best. 
 
SAS offers a wide range of techniques to create an Excel report, each with its own advantages and 
limitations. Before starting a new program, the SAS programmer should spend time to determine the 
most appropriate technique to use, taking into consideration the customer’s needs, constraints, and 
time frame. 
 
In this paper, I will first discuss several techniques used to generate an Excel report using SAS, and 
highlight some of their advantages and limitations. I will then present a few questions that SAS 
programmers can ask themselves to determine the best method to use. 
 
3. PROC EXPORT 
3.1 DESCRIPTION 
PROC EXPORT is the most common way to export a SAS data set to a Microsoft Excel document. Its 
simple syntax makes it easy to understand. Usually, it is the first method that a SAS programmer will 
learn to use in order to export data. It is a basic technique that proves useful in many situations. 
 
PROC EXPORT can be used in two different ways: 
 First, we can use it to create an Excel file with the data from the data set. With this method, it is not 
possible to format the output. 
 The second solution is to use an Excel template and to populate the file with data from the data set. 
An Excel document is saved on the computer and the columns are formatted as needed. Then the 
path and filename of the Excel template are entered in the PROC EXPORT OUTFILE parameter. 
JPEG to PDF Converter | Convert JPEG to PDF, Convert PDF to JPEG
Open JPEG to PDF Converter first; Load JPG images from local folders in "File" in toolbar Windows Explorer; Select "Batch Conversion" & Choose "PDF" in "Output
changing pdf file to jpg; batch pdf to jpg online
JPG to GIF Converter | Convert JPEG to GIF, Convert GIF to JPG
Open JPEG to GIF Converter first; Load JPG images from local folders in "File" in toolbar Windows Explorer; Select "Batch Conversion" & Choose "GIF" in "Output
batch pdf to jpg converter online; convert pdf file into jpg
   
Creating an Excel report: A comparison of the different techniques 
‐3‐
 
3.2 SYNTAX 
PROC EXPORT DATA = sasglf 
DBMS=excel  
OUTFILE = "c:\sas_globalforum.xls" 
REPLACE
sheet='page1'
RUN
3.3 ADVANTAGES
  
PROC EXPORT is a good method for easy data manipulation. The Excel file can have one or multiple 
spreadsheets.  
 
It is a good technique if the customer expects a simple listing developed quickly and does not require 
complex formatting.  
The export wizard in SAS is an interface to the EXPORT procedure. We can create the same report with 
the PROC EXPORT. The advantage is that we can incorporate the SAS code in the program and we do not 
need to step through all the export wizard windows every time we want to create a file. 
 
3.4 LIMITATIONS 
Customization of a report appearance is limited even when using an Excel template. PROC EXPORT starts 
in the default, top, left cell (A1) and fills out the necessary rows and columns. Moreover, PROC EXPORT 
cannot use the SAS labels as column names in Excel unless you are using SAS 9.2. This limits the use of 
PROC EXPORT for report programming. Typically, users have no knowledge of the SAS data set structure 
and SAS variable names are not meaningful to them. In addition, variable names in SAS have restrictions 
that column labels don’t share. 
 
The order of columns in the exported worksheet is the same as the order of variables in the original data 
set. Variables need to be ordered before using the PROC EXPORT. All the existing variables in the data 
set will be output using this technique. This method also requires that your SAS installation includes the 
SAS/ACCESS Interface to PC Files license. 
4. LIBNAME ENGINE 
 
LIBNAME engine is one of the newest methods to transfer information from SAS into Excel. It is available 
with SAS version 9 and lets you use Excel as a SAS library. 
LIBNAME engine allows advanced customization of your output. It does not give full control of Excel like 
DDE, but it has one major advantage: Excel does not need to be installed on the machine running SAS. 
4.1 SYNTAX 
There are two ways to use LIBNAME for generating an Excel file. It can create a new workbook from 
scratch or it can write an Excel template. 
 
A. LIBNAME engine without a template 
JPG to DICOM Converter | Convert JPEG to DICOM, Convert DICOM to
Open JPEG to DICOM Converter first; Load JPG images from local folders in "File" in toolbar Windows Explorer; Select "Batch Conversion" & Choose "DICOM" in
c# convert pdf to jpg; pdf to jpeg
JPG to JBIG2 Converter | Convert JPEG to JBIG2, Convert JBIG2 to
Open JPEG to JBIG2 Converter first; Load JPG images from local folders in "File" in toolbar Windows Explorer; Select "Batch Conversion" & Choose "JBIG2" in
best pdf to jpg converter; convert multi page pdf to jpg
   
Creating an Excel report: A comparison of the different techniques 
‐4‐
 
 The Excel file should not exist on the drive as the LIBNAME engine cannot overwrite. 
LIBNAME toexcel EXCEL 'c:\sugi_libname.xls' VER=2002 ;  
DATA toexcel.sugi(DBLABEL=YES); 
SET sugi.sugi ; 
RUN
LIBNAME toexcel CLEAR
A data step is used to export the data. We can choose the name of the tab in the Excel output and we 
can export the variable labels with the option DBLABEL=YES. 
Ver=2002: To specify the 
most current version. The 
default is Excel 97 
DBLABEL=YES: Write the 
variable labels 
 
B. LIBNAME engine with a template 
LIBNAME Engine can be used with an Excel template to create a customized report. The data are output 
in the named ranges which are a subset of cells defined using Excel option insert‐>name‐>define. 
Multiple named ranges can be defined and used to control the display of data in the spreadsheet. 
deletion, SAS will not populate the range*/ 
PROC DATASETS LIB=toexcel; 
DELETE sugi; /* Sugi is the named range defined in excel*/ 
RUN
QUIT
PROC DATASETS LIB=toexcel; 
DELETE param;   /* 2
nd
named range defined in excel*/ 
RUN
QUIT
DATA toexcel.sugi; /* 2
nd
output the data in the ‘sugi’ range defined in Excel*/ 
SET sugi ; 
RUN
DATA toexcel.param ; 
SET param ; 
RUN
LIBNAME toexcel CLEAR/* Disconnect from workbook*/ 
4.2 ADVANTAGES 
LIBNAME engine offers the advantages of exporting data to Excel in a quick and easy manner, as well as 
developing elaborate reports. It does not need Excel to be present or activated, and a simple data step 
can be used to populate the output. The Excel spreadsheet can be manipulated much like a SAS data set 
and unlike PROC EXPORT (before SAS 9.2), LIBNAME engine can export the variable labels. 
 
LIBNAME engine is a possible solution to program a fancy report.  Pre‐defined and customized Excel 
worksheets can be easily used after understanding named ranges in Excel.  
4.3 LIMITATIONS 
Using LIBNAME can at first be confusing.  Each data set appears twice when you open the Excel file with 
LIBNAME:  
JPG to JPEG2000 Converter | Convert JPEG to JPEG2000, Convert
Open JPEG to JPEG2000 Converter first; ad JPG images from local folders in "File" in toolbar Windows Explorer; Select "Batch Conversion" & Choose "JPEG2000" in
convert pdf to jpg; changing file from pdf to jpg
JPG to Word Converter | Convert JPEG to Word, Convert Word to JPG
Open JPEG to Word Converter first; Load JPG images from local folders in "File" in toolbar Windows Explorer; Select "Batch Conversion" & Choose "Word" in
bulk pdf to jpg converter; batch pdf to jpg converter
   
Creating an Excel report: A comparison of the different techniques 
‐5‐
 
 
‐ One with the expected name. This data set is the named range. 
 
‐ One with a trailing “$”. This data set is the spreadsheet. 
It requires some time to understand Excel structure and the use of named ranges. Without a correctly 
named range in Excel, LIBNAME cannot execute and display an error message in the log. 
By default, LIBNAME engine writes the variable names in the first row of a range. When defining the 
named ranges, users need to remember that the first row will be populated with the variable names. 
The only solution not to display the headers is to hide the first row of the range in the Excel template. 
This method also requires that your SAS installation includes the SAS/ACCESS Interface to PC Files 
license. 
5. ExcelXP TAGSET 
5.1. DESCRIPTION 
ExcelXP tagset is an ODS destination available in SAS version 9.1 that utilizes the Extensible Markup 
Language (XML). It can be downloaded from the SAS website. Using the ExcelXP Tagset is a powerful 
method to control formatting of a spreadsheet. Common ODS options can be used as well as many 
other helpful options specific to the tagset. 
 
ExcelXP tagset can be used to export the results of PROC REPORT, PROC TABULATE, or PROC PRINT. It 
can display multiple tables per worksheet as well as multiple worksheets. 
As any other ODS destination, the option ‘style’ can be used with the ExcelXP tagset. Many styles are 
available in SAS and styles can also be customized or created using PROC TEMPLATE. 
5.2. SYNTAX 
ODS listing 
ODS results; 
ODS listing close/*Turn off the standard line printer destination*/ 
ODS noresults; 
/*Prevents results from appearing within SAS viewer*/ 
ODS tagset.ExcelXP 
FILE="c:\sas_globalforum.xls" 
STYLE=sasgl  /*Style to control appearance of output*/ 
options     (Embedded_titles = 'yes'  /*ExcelXP options*/         
Embedded_Footnotes   = 'yes' 
sheet_name= 'Sasgl' 
autofilter= 'yes' 
frozen_headers= '3' 
autofit_height= 'yes' 
absolute_column_width= '15,10,10,13'); 
TITLE1 "List of SAS conferences"
FOOTNOTE1 "April 4th 2011"
PROC REPORT DATA=sglf NOWD; 
COLUMN conference city state attendees; 
JPG to PNG Converter | Convert JPEG to PNG, Convert PNG to JPG
Open JPEG to PNG Converter first; Load JPG images from local folders in "File" in toolbar Windows Explorer; Select "Batch Conversion" & Choose "PNG" in "Output
change file from pdf to jpg on; .pdf to .jpg online
VB.NET Image: PDF to Image Converter, Convert Batch PDF Pages to
RasterEdge .NET Imaging PDF Converter makes it non-professional end users to convert PDF and PDF/A documents commonly in daily life (like tiff, jpg, png, bitmap
best convert pdf to jpg; pdf to jpeg converter
   
Creating an Excel report: A comparison of the different techniques 
‐6‐
 
DEFINE conference /CENTER  style(column)=[font_weight=bold] style(header) = 
[background = CX4D7EBF]; 
DEFINE city /CENTER    style(header) = [background = CX4D7EBF];   
DEFINE state /CENTER    style(header) = [background = CX4D7EBF]; 
DEFINE attendes /CENTER    style(header) = [background = CX4D7EBF]; 
RUN
ODS tagset.ExcelXP CLOSE/* Close and release the xml file so it can be opened with 
Excel*/ 
ODS listing
ODS results; 
In this example, we used only a few options but many more are available and documented online. 
5.3. ADVANTAGES 
ExcelXP tagset has an amazing number of options and high flexibility, allowing it to accomplish almost 
any report. It reduces or eliminates the need for manual formatting, as all formatting and layouts are 
performed by SAS. There is no need to create a template or edit the Excel workbook. ExcelXP includes a 
lot of options that control the appearance of the report, and many papers are available online to get a 
better understanding of all them.  
 
ExcelXP tagset is one of the best ways to create a file with multiple sheets. Unlike other techniques, 
there is no need to prepare a template or to use a SAS macro. All formatting is performed by SAS, so it 
becomes very easy to define a style and apply it to all the worksheets. 
5.4. LIMITATIONS 
In order to take advantage of the latest ExcelXP features, the tagset must be downloaded and installed. 
Computers without the latest version of ExcelXP might not be able to run SAS programs to create 
reports. Additionally, ExcelXP is still evolving, thus functionalities may change in the future.  
 
Excel does not handle date variables like SAS. Date variables exported from SAS with ExcelXP tagset are 
interpreted like a text variable. Excel will understand SAS dates only if they are converted to a specific 
format before using ExcelXP (the paper “The Devil Is in the Details: Styles, Tips, and Tricks That Make 
Your Microsoft Excel Output Look Great!” gives a great explanation about date format with ExcelXP). 
 
ExcelXP tagset produces an XML file designed for Excel. XML is a great way to store data; however, it is 
not readable on every computer. Some customers with an older version of Excel might not be able to 
open the file created by ExcelXP tagset. One of the solutions to avoid this issue is to open the XML file 
and save it in XLS format. This can be automated using a SAS macro and a VBS script.  
6. ODS CSV 
ODS CSV is an option that can be used to create an Excel file. It was experimental in SAS 8 and moved to 
production in SAS 9.  ODS CSV creates a comma‐separated value (CSV) text file that can be read and 
   
Creating an Excel report: A comparison of the different techniques 
‐7‐
 
displayed in Excel. The values are enclosed in double quotation marks in the CSV file. Thanks to these 
quotation marks, commas are allowed as part of the values. 
6.1. SYNTAX 
 
ODS CSV FILE='C:\sasglobal.csv'
PROC PRINT DATA=sasglobalforum; 
RUN
ODS CSV CLOSE
6.2. ADVANTAGES 
ODS CSV does not actually produce an Excel file. The output is a CSV document that can be imported in 
Excel. The main advantage of this format comes from its age and its widespread compatibility. CSV files 
can be opened in any Excel version and almost any spreadsheet and database management system.  
Additionally, the CSV file size is quite small since the CSV destination does not have any formatting.  
These two advantages make ODS CSV a good technique when we need to create a small file that will be 
read on different versions of Excel. 
6.3. LIMITATIONS 
 
ODS CSV does not offer control over output appearance, and it creates a simple Excel‐readable text file 
with no formatting. It generates output beginning on row 3 by default. To remove the first two rows, we 
need to modify the tagset and override the defaults. It offers less control over the titles, footnotes and 
other styles compared to the other techniques discussed in this paper. 
7. ODS HTML 
The ODS HTML BODY is used to create HTML documents. However, it can also be used to create an Excel 
report by assigning an XLS extension instead of HTML.  
7.1. SYNTAX 
 
ODS HTML BODY = 'C:\sugi.xls';  
PROC FREQ DATA=sugi;  
LES var1 var2;  
TAB
RUN;  
ODS HTML CLOSE
7.2. ADVANTAGES 
ODS HTML is a destination commonly used for exporting output to Microsoft Excel. It provides an easy 
way to create a report that can be customized using the predefined styles in SAS.  
Not only can we use predefined SAS styles, but we can also define our own style using PROC TEMPLATE 
or applying cascading style sheets (CSS) to format ODS output. The appearance of the output, color, 
fonts, borders, sizes as well as many others parameters can thus be defined. 
   
Creating an Excel report: A comparison of the different techniques 
‐8‐
 
7.3. LIMITATIONS 
ODS HTML creates a file that Excel opens as a spreadsheet. Although the file extension is XLS, it still 
remains an HTML document with many tags controlling the formatting. The document created by the 
markup can become large if the data exported includes many variables and records. It is possible to 
reduce the size of the file by using the style MINIMAL provided by default with SAS. Other techniques 
also exist to reduce the size of Excel files. 
 
ODS HTML is still widely used but it has been replaced by the tagset MSoffice2K in SAS 9 which is a more 
powerful tagset for HTML output that can be read with Excel. Outputs created with ODS HTML are more 
suitable for the browser rather than Excel. 
8. ODS MSOFFICE2K 
The ODS MSOffice2K is an improved version of the ODS HTML available with SAS version 9. It is used in 
the same way as ODS HTML and produces an HTML file that can be opened by Excel. The main 
difference is that this tagset was developed especially for creating HTML output compatible with the 
Office applications. 
8.1 SYNTAX 
ODS tagsets.msoffice2k FILE'C:\sugi.xls';  
PROC PRINT DATA=sugi; 
RUN
ODS tagsets.msoffice2k CLOSE
8.2 ADVANTAGES 
ODS MsOffice2K  is a quick and easy method that offers the same benefits as ODS HTML and a better 
support of embedded images and graphics. It can be used to generate presentation‐quality output or 
simple reports with limited formatting. 
 
ODS MsOffice2K is geared to work specifically with the Office applications that can read HTML. It is 
recommended to use this tagset rather than the often‐used HTML destinations for generating Excel 
output. 
8.3 LIMITATIONS 
The output created by the tagset is an HTML document, and as ODS HTML, the file can become quite 
large if many data are exported to Excel.  
 
This ODS destination does not provide the many options available with the ExcelXP destination and it 
cannot create multi‐sheet reports. However, there is a modified version of this tagset available online 
(MSOffice2K_x) that adds options to perform many of the common tasks in Excel, including one that 
generates multi‐sheet files.  
   
Creating an Excel report: A comparison of the different techniques 
‐9‐
 
9. DDE 
9.1 DESCRIPTION 
Dynamic Data Exchange (DDE) is an old protocol, but it is one of the most powerful methods to integrate 
SAS and Excel.  
DDE is the direct communication between SAS and Excel using a server/client model. Excel acts as a 
server and SAS as a client. It is the only technique that can use visual basic language, the most powerful 
feature of Excel, and provides total control over the output. 
 
This technique might seem obscure to people who have no experience with it. There are two ways to 
use DDE: 
 The first approach, and probably the most difficult one, is to execute all the code directly in SAS 
using X4ML functions to provide instructions to the Excel application. DDE can enable much of the 
functionality of Excel within SAS. 
 The second solution is to create a pre‐formatted Excel template and populate it using DDE. With just 
two macros to open and close the Excel file, it becomes very easy to program a fancy report. This 
solution is easier and faster. Anyone can prepare a nice spreadsheet using the power of Excel, and 
populate it with the SAS data. 
9.1. SYNTAX 
%LET stufile=C:\sugi; 
/* 
TO OPEN XLS FILE 
*/ 
%MACRO OPENXLS(FOLDER=,IN=); 
%LET FIL=; 
DATA _null_; 
LENGTH FILE $300.
FILE="'&STUFILE\&folder.&in.'"
FILE="'"!!TRIM(LEFT(TRANWRD(FILE,"'",'"')))!!"'"
CALL SYMPUT ("FIL",TRIM(LEFT(FILE))); 
RUN; 
options noxwait noxsync; 
x &fil.
filename commands dde "Excel|system"
%MEND OPENXLS; 
/* 
TO SAVE ACTIVE XLS FILE 
UNDER SPECIFIC FOLDERS AND QUIT EXCEL       
*/ 
/*****
*
******************** *******************************************************/ 
%MACRO CLOSEXLS(out=,quit=0); 
%LET FIL=; 
DATA _null_; 
LENGTH FILE $300.
FILE="[save.as('&STUFILE.\&out.')]"
FILE="'"!!TRIM(LEFT(TRANWRD(FILE,"'",'"')))!!"'"
CALL SYMPUT ("FIL",TRIM(LEFT(FILE))); 
RUN; 
%PUT &FIL=; 
DATA _null_; 
file commands; 
   
Creating an Excel report: A comparison of the different techniques 
‐10‐
 
put &fil.
put '[CLOSE()]'
%IF &quit=0 %THEN %DO
put '[QUIT()]'
stop; 
RUN; 
filename commands clear; 
%END
%IF &quit=1 %THEN %DO
RUN; 
%END
%MEND CLOSEXLS; 
%OPENXLS(FOLDER=template\,IN=sugi_2011_dde.xls); /* Open the Excel template*/ 
to be in the language of the excel on your computer*/ FILENAME TAB DDE 
"EXCEL|[sugi_2011_dde.xls]sugi!R5C3:R30C10";  
FILENAME xlcmds DDE "EXCEL|SYSTEM"
DATA _null_ /* Data step to output the data in the Excel file */ 
SET sugi; 
FILE TAB NOTAB LRECL=7000
PUT  conference  
'09'x   
city 
'09'x 
state 
'09'x 
attendees  
'09'x
RUN
set to another location*/ 
FILENAME TAB DDE "EXCEL|[ sugi_2011_dde.xls]sugi!R16C1:R18C2"
FILENAME xlcmds DDE "EXCEL|SYSTEM"
DATA _null_
SET param; 
FILE TAB NOTAB LRECL=7000;  
PUT  var1  
'09'x 
var2  
'09'x
RUN
DATA _null_; /* Invoke a VB macro ‘lastline’ embedded in the Excel template */ 
FILE xlcmds;  
PUT '[RUN("lastline")]';  
RUN
%CLOSEXLS(OUT=sugi_DDE_&today..xls); Specify the name of the output and close the 
file*/ 
9.2. ADVANTAGES 
DDE is a great technique to create sophisticated reports. It provides full control of Excel and allows you 
to leverage the powerful capabilities of this reporting tool. Anyone who knows Excel can prepare an 
Excel template with pre‐formatted cells and columns. 
Documents you may be interested
Documents you may be interested