itextsharp mvc pdf : C# convert pdf to tiff Library software class asp.net winforms wpf ajax io090-part906

Excel
lent Ways of Exporting SAS
Data to Excel 
Ralph Winters 
Alydon Technical Services, Inc. 
ABSTRACT 
With the addition of the SAS Import/Export Wizard, exporting data to Microsoft
Excel became much easier.  
However, many alternative solutions exist and this paper will survey the best of them.  These include exporting 
to Excel via the Output Delivery System and using macro code to generate CSV files.  Sometimes even simple 
SAS procedures such as Proc Print can do the trick.  This paper is geared toward all SAS users, and describes 
the benefits of each method as well as some of their pitfalls. 
INTRODUCTION 
With the introduction of SAS 9, there now exists a plethora of options for exporting data to Microsoft Excel.  
What used to be a laborious task can now be reduced to several lines of code.  Of course, not everyone is 
currently at SAS 9, nor is everyone using SAS in a Windows environment.  In these cases the options are more 
limited.  The choice of which technique you choose ultimately hinges upon the version of SAS you are running, 
the type of site license you have, the requirements of your application, and of course, personal preference.  The 
goal of this paper is to review some of the best options to perform this seemingly easy task. 
The examples in this paper have all been demonstrated using SAS 9.1 and Excel 97 under Windows XP.  The 
sample data sets used are those supplied with SAS. 
SAS 9 OPTIONS 
Using the LIBNAME Statement 
One of the newer ways of writing data to Excel is via the LIBNAME statement.  This makes it a snap to simply 
assign a library reference to an Excel workbook and write directly to its individual sheets.  The example below 
assumes that spreadsheet DEMOA1 will be created from scratch. 
libname myxls “c:\demoA1.xls”;                                                               
data myxls.houses;          
set sasuser.houses 
data myxls.build; 
set sasuser.build; 
data myxls.crime; 
set sasuser.crime; 
run;                                                                                         
proc sql;                                                                                    
create table myxls.avg_house_price  as 
select style,avg(price)as avg_price from sasuser.houses group by style;                   
libname myxls clear; 
The LIBNAME statement assigns a SAS libref to the workbook DEMOA1 on drive C.  This can be a brand new 
workbook or a previously existing workbook.  The next three data steps load individual sheets within the 
workbook corresponding to the sample data sets HOUSES, BUILD and CRIME.  Figure 1 shows the exported 
HOUSES data set.  The SQL step shows how you can also create worksheets consisting of summarized data.  
1
Ins & Outs
NESUG 17
C# convert pdf to tiff - application software tool:C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
www.rasteredge.com
C# convert pdf to tiff - application software tool:VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.net, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
www.rasteredge.com
In this case we are adding a new sheet called AVG_HOUSE_PRICE that consists of the average price for each 
house style.  Figure 2 displays this result. 
Figure 1  
2
Ins & Outs
NESUG 17
application software tool:C# Create PDF from Tiff Library to convert tif images to PDF in C#
Please copy the following C#.NET demo code to have a quick TIFFDocument doc = new TIFFDocument(inputFilePath); // Convert loaded TIFF file to PDF document
www.rasteredge.com
application software tool:C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
›› C# PDF: Convert PDF to Jpeg. C# PDF - Convert PDF to JPEG in C#.NET. C#.NET PDF to JPEG Converting & Conversion Control. Convert PDF to JPEG Using C#.NET.
www.rasteredge.com
Figure 2
One thing that you will discover is that that occasionally the original SAS formatting is not preserved.  Note that 
variable AVG_PRICE in Figure 2 is no longer formatted appropriately.  Formatting is performed according to the 
conversion rules listed in Table 1, which will usually give acceptable results.  If formatting is critical to your 
application, you may need to consider other options (DelGobbo SUGI 28).   
Table 1   Default Excel Formats for SAS Variable Formats 
XLS Data 
Type 
SAS Formats 
TEXT 
$BINARYw. 
$CHARw. 
$HEXw. 
$w. 
NUMBER 
w.d 
BESTw. 
BINARYw. 
COMMAw.d  COMMAXw.
Ew. 
FRACTw. 
NEGPARENw.d 
PERCENTw.d 
HEXw.
CURRENCY  DOLLARw.d 
DOLLARXw.d 
DATETIME 
DATEw.  
DATETIMEw.d 
DDMMYYw. 
HHMMw.d 
JULDAYw. 
JULIANw. 
MMDDYYw. 
MONTHw. 
MMYYw.d 
MOYYw. 
WEEKDATEw
WEEKDATXw
WEEKDAYw
WORDDATEw. 
WORDDATXw.
3
Ins & Outs
NESUG 17
application software tool:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
Home ›› XDoc.PDF ›› C# PDF: Convert PDF to HTML. C#.NET PDF SDK - Convert PDF to HTML in C#.NET. How to Use C# .NET XDoc.PDF
www.rasteredge.com
application software tool:C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
This is a C# programming example for converting PDF The magnification of the original PDF page size Description: Convert to DOCX/TIFF with specified resolution
www.rasteredge.com
SAS dates can be troublesome as well, so make sure you specify a date format in your code: 
data datetest; 
format date_formatted date9.
date_formatted="13MAY2004"d
date_unformatted="04JUL2004"D
run
libname myxls "c:\demodate.xls" ;                                                            
data myxls.tab2 ; 
set datetest; 
In this case Excel will correctly display 05/13/2004 for the variable DATE_FORMATTED  in worksheet TAB2 of 
workbook DEMODATE.  However variable DATE_UNFORMATTED will display as 16256, which is the 
unformatted numeric value for “04JUL2004”D.  
There is a variation of this code that can be run to create a spreadsheet from the UNIX operating system, if 
SAS/ACCESS for PC files has been installed.  This technique uses the PCFILES option in the SAS LIBNAME 
statement: 
libname myxls pcfiles server=D2323 port=8621 path=”c:\demo3.xls”; 
ODS CSV 
The ODS CSV option that was experimental in SAS 8 is production in SAS 9.  This feature allows you to specify 
an ODS CSV destination for a procedure, which then writes its output as a CSV (comma separated value) file. 
Here is a simple example using the sample data set SASUSER.CLASS.  The CSV output is shown in Figure 3, 
as displayed by Excel. 
ODS CSV file=’myfile.csv’; 
proc print data=sasuser.class; 
run; 
ODS CSV close;
4
Ins & Outs
NESUG 17
application software tool:C# Convert: PDF to Word: How to Convert Adobe PDF to Microsoft
RasterEdge.XDoc.TIFF.dll. inputFilePath = @"**pdf"; String outputFilePath = @"**docx"; // Convert PDF to Word. C#: Advanced PDF to Word Conversion Options.
www.rasteredge.com
application software tool:Online Convert PDF file to Tiff. Best free online PDF Tif
Using this .NET PDF to TIFF conversion control, C# developers can render and convert PDF document to TIFF image file with no loss in original file quality.
www.rasteredge.com
Figure 3 
Let’s use the ODS CSV technique on our dates data set to see how EXCEL will handle these values. 
data datetest; 
format date_formatted date9.; 
date_formatted="13MAY2004"d; 
date_unformatted="04JUL2004"D; 
run; 
ODS CSV file="c:\demodate.csv"
proc print data=datetest; 
run; 
ODS CSV close; 
run; 
Here our formatted and unformatted dates will be treated as they were previously, although variable 
DATE_FORMATTED will be presented as 13-May-04 instead of 05/13/2004.  
SAS 7 & 8  OPTIONS 
In SAS 7 and 8 there are still many excellent ways to export data, including the SAS System Viewer and ODS 
HTML. 
5
Ins & Outs
NESUG 17
application software tool:C# WPF Viewer: Load, View, Convert, Annotate and Edit Tiff
from Excel; C#: Create PDF from PowerPoint; C#: Create PDF from Tiff; C#: Convert PDF to Word; C#: Convert PDF to Tiff; C#: Convert PDF
www.rasteredge.com
application software tool:C# WinForms Viewer: Load, View, Convert, Annotate and Edit Tiff
from Excel; C#: Create PDF from PowerPoint; C#: Create PDF from Tiff; C#: Convert PDF to Word; C#: Convert PDF to Tiff; C#: Convert PDF
www.rasteredge.com
The SAS System Viewer 
The SAS Viewer is a free Windows application and a great tool for copying SAS data sets to Excel.  It is not 
even necessary to have SAS installed on your computer, so it is equally useful for programmers and non-
programmers alike.  To use it you simply start the viewer, open the data set, select your data set, then cut and 
paste it into Excel.  Format your Excel cells as all text in order to preserve the data’s formatting.  The viewer will 
allow you to save the data as a CSV or TXT file and performs simple filtering and sorting of data.  This software 
will also support some cross-platform SAS data sets, so it is a great tool for multiple OS environments. 
The following example use the sample data set SASUSER.CLASS. 
• 
Start the SAS System Viewer.    
• 
Select FILE and then OPEN to get to the file selector dialog.  Find and open SASUSER.CLASS.   
• 
Enter a  CTRL-A followed by a CTRL-C to select and copy the entire table.  You can also select portions 
of the table as needed. 
Let’s filter the data set to include only the males:   
• 
Select  Edit/Filter from the Viewer drop down menu.   
• 
Type the WHERE clause “Where Sex=’M’” and press ENTER.  The results are shown in Figure 4. 
The next step is to decide which method to choose to export to EXCEL. 
• 
If the table is small enough and/or partial columns or rows have been selected, it is easy enough to 
SELECT then PASTE the data directly into EXCEL. 
• 
You can also save the entire table as a CSV file using the File/Save dialog, then import it into Excel. 
Figure 4
6
Ins & Outs
NESUG 17
ODS HTML 
ODS offers another way to export your data to Excel – ODS HTML.  Although any template can be used to 
illustrate this method, if you are concerned mainly with moving your data, using the MINIMAL style will allow you 
to import your data into Excel with a minimum of HTML formatting.  The results of the code below are displayed 
in Figure 5. 
ODS HTML file=’H:\myfile.xls’ RS=none style=MINIMAL;  
proc print data=sashelp.class noobs; 
ODS HTML CLOSE; 
run;  
Figure 5
Even though the MINIMAL style incorporates the least HTML output into your spreadsheet,  the result is still 
HTML.  One way to completely eliminate to this HTML is to create a new worksheet, select the HTML output, 
then perform a Paste/Special into the new worksheet, making sure that the “Values Only” button is selected. 
In the ODS HTML sample code above I have used Proc Print purely for its simplicity, but you need not stop 
there.  Many applications make extensive use of HTML output to produce very sophisticated displays generated 
by Proc Report and Proc Tabulate. 
ODS CSV or ODS HTML? 
We have now seen two ODS options that can be used to export SAS data to a spreadsheet --  ODS CSV and 
ODS HTML.  So which one is better?  ODS CSV will produce cleaner output, and would be preferable when 
automating exports to spreadsheets where moving data is the central focus.  Use ODS HTML instead when you 
wish to retain some or all of the HTML formatting.  This would usually be for presentation purposes.  
7
Ins & Outs
NESUG 17
SAS 6 OPTIONS 
SAS  6.12 first introduced the File Export Wizard, which has been gradually improved upon since its initial 
release. The purpose of the wizard is to export SAS data sets to a variety of formats that can then be read by 
most external applications, including Microsoft Excel.  
To use the File Export Wizard: 
• 
Choose File Export. 
• 
Specify the library and member (SAS data set) name.  For example SASUSER.CLASS. 
• 
Press NEXT. 
• 
Select Tab Delimited format (*.txt). 
• 
Press NEXT. 
• 
Specify the full path where you want to save the file (c:\filename.txt, for example). 
• 
Press FINISH.  You will see a message in the log indicating that the file was successfully created. 
Tab delimited files were chosen in this instance in order to accommodate embedded commas in the source 
data.  In addition, this is a universal method that can be used across all platforms.   
Another way to harness the power of the File Export Wizard is to use the SAS Display Manager command 
DEXPORT.  The steps listed above, for example, can be duplicated with this single command: 
DEXPORT SASUSER.CLASS  “C:\FILENAME.TXT” 
This following example uses the SAS DM command to automatically output the contents of data set SAMPLE to 
an external file: 
data sample; 
do i=1 to 10; 
output; 
end; 
run; 
dm "dexport sample 'C:\filename.txt'  replace"; 
OPTIONS PRIOR TO SAS 6.12 
SAS versions prior to SAS 6.12 require additional creativity in terms of interfacing SAS with Excel. 
Using DDE 
DDE is a Microsoft data exchange protocol that works under OS/2 and Windows.  One advantage that it enjoys 
is that it will work with older versions of both SAS and of Excel.  The simplest way to use this method is to open 
Excel with a blank workbook and select the default worksheet SHEET1.  Now switch back to SAS in order to 
define the connection between SAS and Excel.  This is done with a FILENAME statement in the form: 
FILENAME fileref DDE ‘DDE-triplet’ <DDE-options> 
The DDE triplet is simply the sheet name, row and column area where the data is to be inserted.  Let’s assume 
that you know your data to be contained within 100 rows and 13 columns.  In addition, you want to anchor your 
data in Row 1, Column 1 of the target worksheet.  You would use this SAS code: 
8
Ins & Outs
NESUG 17
filename ddedata DDE ‘excel|sheet1!r1c1:r100c13’;                                            
data null;                                                                                   
set sasuser.houses;                                                                          
file ddedata;                                                                              
put style bedrooms sqfeet price;                                                           
run;    
If you can live with the inconvenience of not exporting label formats, this is a fairly quick way to get data into a 
spreadsheet.  However this will not work for variables which contain embedded blanks.  For this case, you need 
to add the NOTAB option and explicitly write the tab delimiter.  Below is an example which outputs all variables 
in a tab delimited format.  The results are displayed in Figure 6. 
filename ddedata DDE 'excel|sheet2!r1c1:r100c13' notab;                                      
data null;                                                                                  
set sasuser.crime; 
where staten=: "New";  
*ALL STATES BEGINNING WITH “NEW”; 
file ddedata;                                                                             
put (_all_) ("09"x);   
* “09”X is the ASCII TAB CHARACTER; 
Figure 6
After the worksheet is populated, we are left with a blank column A, so we simply delete it. 
Cut and Paste 
Considered primitive by many, this method can actually be the quickest way to export small listings that already 
exist on flat files or in the output window, or when you can’t change the SAS program that generates the output.  
This is also a very useful method when your SAS output is created under UNIX and your need to load a 
Windows spreadsheet.  In this case, it is absolutely required that some character be present for all variable 
values, so it may be necessary to perform some quick editing before pasting the data into Excel.  
For our example, we will use the SAS listing displayed in Figure 7. 
Figure 7
Obs  staten                                     state   murder 
29  New Hampshire                                33      3.2 
30  New Jersey                                   34      5.6 
31  New Mexico                                   35      8.8 
32  New York                                     36     10.7 
33  North Carolina                               37     10.6 
34  North Dakota                                 38      0.9 
35  Ohio                                         39      7.8 
9
Ins & Outs
NESUG 17
Obs  rape   robbery   assault   burglary   larceny    auto 
29  10.7     23.2      76.0     1041.7     2343.9   293.4 
30  21.0    180.4     185.1     1435.8     2774.5   511.5 
31  39.1    109.6     343.4     1418.7     3008.6   259.5 
32  29.4    472.6     319.1     1728.0     2782.0   745.8 
33  17.0     61.3     318.3     1154.1     2037.8   192.1 
34   9.0     13.3      43.8      446.1     1843.0   144.7 
35  27.3    190.5     181.1     1216.0     2696.8   400.4 
A general procedure to use when faced with output like this is: 
• 
Select all the data from the output window, cut and paste it into Excel.  All the data should end up contained 
within Column A 
• 
In Excel, sort the data by Column A, which will aggregate all the paired observation records together, by 
OBS number 
• 
Get rid of extraneous lines like titles, page numbers etc. 
• 
Join all paired observations (row 1-2, 3-4, etc.) using the Excel CONCATENATE function.  Then use 
Copy/Paste/Values to copy that column (column G in our example) to another worksheet.  See Figure 8. 
• 
Use the ‘Text to Column function’ to parse out the concatenated data line.  Use the first data row as the 
template line and use ‘Fixed Width’ to insert column breaks.  Excel will usually make pretty good guesses as 
to where the lines should be.  In this sample, our data contains embedded blanks (e.g. ‘New Jersey’) so we 
need to be careful before we accept Excel’s default split. 
• 
Sort on one column in order to sort out the joined data line from the paired segment lines.  In our example I 
know that the state name is ending up in column I, so I will sort on that column and then edit out all of 
extraneous data contained in rows 1-6 and 13-16, as well as extraneous columns A and H.  See Figure 9. 
• 
Because of the way we have selected our data, the order of the data fields is now rape, robbery, assault,  
burglary,  larceny,  auto, Staten, state and murder. These can now be inserted as labels. 
Figure 8 
10
Ins & Outs
NESUG 17
Documents you may be interested
Documents you may be interested