mvc pdf viewer : Convert .pdf to .jpg Library application component .net windows asp.net mvc Excel10-part1024

1
Using ODS to Generate Excel Files 
Chevell Parker 
Introduction 
This paper will demonstrate techniques on how to effectively generate files that can be 
read into Microsoft Excel using the Output Delivery System. Topics of discussion will be 
include the following: 
1) Techniques for creating files with ODS that can be read by Excel 
2) Common problems that you may encounter along with solutions 
3) Advanced techniques using XML and the ODS Markup Language to supply 
worksheet, workbook, printer, window, data validation, sorting, traffic-lighting and 
various other properties with ODS 
4) Generating Excel file with SAS/INTRNET 
5) Example of downloading an Excel file from and HTML page 
Some of the tips provided will work with Excel 97, 2000, and XP, but much of what is  
covered especially,  the advanced techniques using XML will apply to Excel 2000 and  
greater.  Many of the techniques used are the CSS style properties. As you will see,  
creating files with the Output Delivery System that can be read with Excel is very easy,  
however,  some additional work may be needed to customize the output as you like.  
Generating Excel files 
There are several methods of generating Excel or spreadsheet files using the Output 
Delivery System. The first method that we will discuss is using the HTML destination to 
create the Excel or spreadsheet files. When you specify a procedure or data step within 
the ODS HTML statement with the .XLS or .CSV extensions, Microsoft Excel is opened 
in the Results Viewer.  Excel is not an ODS destination and the fact that the file is opened 
in Excel is partially a product of ODS.  The Results Viewer attempts to open the file 
based on the files registered extensions. By default the registered extensions of  .XLS and 
.CSV belong to Excel on the PC.  
Syntax for creating Excel files  with the HTML destination 
ODS HMTL FILE=”C:\TEMP.XLS”; 
PROC PRINT DATA=SASHELP.CLASS; 
RUN; 
ODS HTML CLOSE; 
Convert .pdf to .jpg - 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
convert pdf image to jpg image; convert multiple page pdf to jpg
Convert .pdf to .jpg - 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
convert multiple pdf to jpg; convert pdf picture to jpg
2
The new ODS CSV destination can also be used to create files that can be opened in 
Microsoft Excel. The acronym CSV stands for Comma Separated Value. This new 
destination is experimental with Version 8.2 as part of the ODS Markup Language. The 
New CSV destination has a tagset which allows the defaults of the destination to be 
modified as we will see shortly. Excel has the ability to ready CSV files, so specifying 
the ODS CSV destination with the extension .CSV will create a comma separated file 
that can be opened in Excel. Also, the delimiter can be changed from a comma to any 
other delimiter by modifying the CSV tagset. The CSV destination is experimental in 
Version 8.2 and production for Version 9.  Use the CSVALL destination to maintain the 
titles and footnotes. 
Syntax for creating CSV files with ODS 
ODS CSV FILE=”C:\TEMP.CSV”; 
PROC PRINT DATA=SASHELP.CLASS; 
RUN; 
ODS CSV CLOSE; 
ODS HTML vs. ODS CSV 
The benefit of using the ODS HTML destination with the .XLS or .CSV extensions is 
that the formatting is preserved in the Excel file. If you do not use PROC Template to 
generate a style, the default style is used and carried forward to the Excel file. The 
drawback to using the ODS HTML destination is that the files tend to be quite large by 
default which makes the file take longer to load. This is because ODS HTML still uses 
the 3.2 tagset which allows the formatting and the data to reside in the same file. For 
example, each cell has a <FONT> tag with all of its attributes along with alignment 
properties and the like. The HTML 4.0 specification is that the formatting and the data 
should be separated.  The HTML tagsets generated with the ODS Markup Language 
follows this guideline which is covered in the next section. 
Using the ODS CSV destination will generate the traditional spreadsheet file without any 
formatting.  The benefit of using the CSV destination is that because is does not have any 
formatting, the file size of the CSV file is quite small. The CSV destination does not 
generate titles and footnotes in the output. The CSVALL destination includes both the 
titles and footnotes. 
Reducing file size 
There are a few techniques that can be employed to reduce the size of Excel files and 
reduce the time it takes for the file to load.  
The first thing that we can be done is to create a CSS style sheet with the ODS HTML 
destination.  This allows you to separate the formatting from the data. This reduces the 
need for each record to have formatting instruction. If you specify the STYLESHEET= 
option with a file, an external CSS file is generated. If the STYLESHEET option is 
Online Convert Jpeg to PDF file. Best free online export Jpg image
Online JPEG to PDF Converter. Download Free Trial. Convert a JPG to PDF. You can drag and drop your JPG file in the box, and then start
convert pdf document to jpg; convert pdf to jpeg
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Download Free Trial. Convert a PDF File to JPG. Easy converting! We try to make it as easy as possible to convert your PDF files to JPG.
.pdf to .jpg online; changing pdf to jpg on
3
specified without a file, then the formatting instructions are added to the beginning of the 
file as an embedded CSS file. 
The HTML tagsets can be used to reduce the size of the .XLS files in 8.2 and beyond. 
With the ODS Markup Language, there are 4 to 5 HTML tagsets that can be used to do 
this by using the HTML 4.0 standard. The below markup example uses the PHTML 
tagset to generate the HTML files. This tagset reduces the HTML file the largest while 
maintaining the formatting. If formatting is not an issue, then you might want to try the 
CHTML tagset which reduces the file even further, but it does not allow formatting. 
The final method for reducing the size of the Excel file is to use the Minimal style. The 
Minimal style is one of the default styles shipped with SAS. The Minimal style has very 
few formatting instructions which reduces the size of the file. 
ODS HTML Syntax                                           ODS MARKUP Syntax 
ODS HTML FILE=’TEMP.XLS’ STYLESHEET ;       ODS PHTML FILE=’TEMP.XLS’   STYLESHEET=”TEMP.CSS”; 
PROC PRINT DATA=SASHELP.CLASS;                   PROC PRINT DATA=SASHELP.CLASS;           
RUN;                                                                               RUN; 
ODS HTML CLOSE;                                                     ODS PHTML CLOSE; 
General Appearance 
Titles and Footnotes 
Using ODS HTML to create the .XLS or .CSV files will place the entire title or footnote 
in the first cell.  The effect of this is that the first column will become the width of the 
title or footnote. This occurs because ODS uses the non-standard  <Table> tags to house 
the titles and footnotes which Excel does not expect for a header. This happens for the 
Bylines as well. 
To change this behavior, one of the HTML tagsets can be used. The HTML tagsets all  
use the header tags <h1> for titles, footnotes and bylines.  This is the tag that Excel  
expects for its headers. 
ODS HTML Syntax
ODS HTML FILE=’C:\TEMP.XLS’; 
PROC PRINT  DATA=SASHELP.CLASS; 
RUN; 
ODS HTML CLOSE; 
ODS  MARKUP Syntax 
ODS HTMLCSS FILE=’C:\TEMP.XLS’ STYLESHEET=”TEMP.CSS”; 
PROC PRINT DATA=SASHELP.CLASS; 
RUN; 
ODS HTMLCSS CLOSE; 
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
This demo code just converts first page to jpeg image. String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg.
convert pdf to gif or jpg; best convert pdf to jpg
C# Image Convert: How to Convert Tiff Image to Jpeg, Png, Bmp, &
RasterEdge.XDoc.PDF.dll. This demo code will convert first page to jpeg image. C:\input.tif"; String outputFilePath = @"C:\output.jpg"; // Convert tiff to jpg.
change pdf file to jpg; convert pdf to jpg
4
Excel Output 
Default HTML  Output                       ODS Markup Output 
Starting Output in Row 1 
HTML 
By default when generating .XLS or .CSV files with ODS HTML, the output begins in 
row 2. This happens because of the non -breaking space character (&nbsp; )  in the 
anchor tag.  There is no way to get rid of this anchor tag in the HTML destination other 
than to post process the HTML file. The HTML tagsets of the Markup Language can be 
used to start the output in row 1. The HTML tagsets of the ODS Markup Language do not 
have this non-breaking space character in the anchor tag.  See the prior example for 
syntax. 
CSV 
The CSV destination generates output beginning in row 3 of the Excel file. This is just 
the default of the ODS CSV destination. The defaults of the destination can be changed 
by modifying the CSV tagset and overriding the defaults.. The sample code below 
modifies the CSV tagset and starts the data in row 1 removing the empty rows. 
Tagset syntax to delete empty rows from the CSV destination
proc template; 
define tagset tagsets.newcsv; 
parent = tagsets.csv; 
notes "This is the CSV definition"; 
/* we removed the start: put NL. It was putting a line  at the beginning of the table.    */ 
define event table; 
finish: 
put NL; 
end; 
/* We added finish: */ 
/* This makes it so that the line is put at the finish  of the even row instead of every event row.   */ 
define event row; 
finish: 
put NL; 
end; 
C# Create PDF from images Library to convert Jpeg, png images to
Batch convert PDF documents from multiple image formats, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage.
.net pdf to jpg; convert pdf to jpg 100 dpi
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Resize converted image files in VB.NET. Convert PDF to Jpg, Png, Bmp, Gif, Tiff and Bitmap in ASP.NET. Embed PDF to image converter in viewer.
convert pdf into jpg format; batch pdf to jpg converter
5
end; 
run; 
ods tagsets.newcsv body='c:\test.csv' ; 
proc print data=sashelp.afmsg label; run; 
ods tagsets.newcsv close; 
Page Setup 
Page setup options can be set with a combination of CSS style properties and with XML.  
In the page set up, we have the ability to modify almost every piece of the page set up 
such as the margins of the page, the margins of the header and footer, the page 
orientation, the DPI (data per inch) of the output, the paper size, and pretty much 
anything else that you want to set.  
Setting Margins, Page Orientation, and Page Size 
Margins can be set for the page to include the top, bottom, left and right margins. 
Margins can also be set for headers and footers as well as the vertical and horizontal 
justification of the page.  The paper size, page orientation and the first page number can 
all be set. 
The margins for the page can be set using the CSS style property Margin. The margins 
for the headers and footers can be specified using the Microsoft Office specific mso-
header-margin and mso-footer-margin. The alignment of the table horizontally and 
vertically on the page can be set using the mso-horizontal-page-align and the mso-
vertical-page-align CSS style properties. The page orientation can be set within the 
@Page rule by using the style property mso-page-orientation with the possible values of 
portrait or landscape.  To set the page orientation, in addition to specifying this style 
property, the <ValidPrintInfo> tag would have to be specified within the Print XML 
element.(See example on page 20).  The paper size can be modified using the 
<PaperSizeIndex> XML tag within the Print element. To set the first page number, use 
the  mso-first-numbers style property. 
Syntax  for  setting those items included in the page setup 
ods html file='temp.xls' headtext= 
'<style> @page { margin:1.0in .75in 1.0in .75in; 
mso-header-margin:.5in; 
mso-footer-margin:.5in; 
mso-horizontal-page-align:center; 
mso-vertical-page-align:center; 
mso-first-numbers:1  } 
</style>'; 
proc print data=sashelp.class; 
run; 
ods html close; 
C# TIFF: C#.NET Code to Convert JPEG Images to TIFF
Use C# Code to Convert Jpeg to Tiff. string[] imagePaths = { @"C:\demo1.jpg", @"C:\demo2.jpg", @"C:\demo3.jpg" }; // Construct List<REImage> object.
pdf to jpg; convert pdf file to jpg on
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
4. To Image. Convert PDF to image formats, such as PNG, JPG, BMP and GIF. Copyright © <2000-2015> by <RasterEdge.com>. All Rights Reserved.
convert pdf file to jpg format; best way to convert pdf to jpg
6
Setting Headers and Footers  
Headers and footers can also be defined within the @Page rule using the CSS 
style properties mso-header-data and mso-footer-data. This allows you to 
specify customized headers for the printed output.  The headers and footers can 
be a generic page number, page X of Y format, date time, a signature, 
customized on the left, right, top and bottom that include a variety of the fore-
mentioned. The below example uses the Page X of Y header at the top of the 
page and some customized text at the left, center, right and the bottom of the 
page. The HEADTEXT= option is limited to 256 characters including the spaces. 
If the string goes over this limit, it will be truncated and none of the attribute will 
be displayed because it truncates the closing </style> tag. If you need more than 
the 256, it is a good idea to add this information in the doc_head section of the  
Tagset. For examples of doing this, see the example section in the references. 
Syntax for adding headers and footers 
ods htmlcss file='temp.xls'  stylesheet="temp.css" headtext= 
'<style>  
@Page  
{mso-header-data:”&L SAS INSTITUTE &C&Page &P of &N”; 
mso-footer-data:"&Lthis is the left&CPage &P&RThis is the     
right&A&D&T&N&P"}; 
</style>'; 
proc print data=sashelp.class; 
run; 
ods htmlcss close; 
Cell Formatting  
If you ever attempted to import a HTML file with Excel, then you are aware of the 
problems that are associated with doing this. One of the largest problems is with cell 
7
formatting.  The problems that are encountered are no different than when using ODS 
HTML to generate a .CSV or .XLS file. The problem occurs because Excel uses a general 
format to import cell values. The general format reads the cell values as they are typed, 
however, there are some common problems that you should be aware of. 
Common Problems 
 
Both numeric and character variables will lose leading zeroes   
when creating  .XLS or .CSV files with the ODS Destination. You    
will not realize the problem until the leading zeroes are omitted from   
an account number, an Id, or a zip code. 
 Numeric variables with a length greater than 11 digits end up in scientific notation. 
 
Numeric variables with a dash separating values are interpreted as Excel dates
 
Trailing zeroes in the decimal values are lost also when the cell    
values are imported into Excel. 
 
The height and width specified for cell values within SAS are   
ignored when a .XLS or .CSV file is created with ODS. 
 Output forced to a new line using the  <BR> tag is read as a separate   
observation 
Excel Dates 
 Dates are stored in Excel as serial numbers from Jan 1, 1900, or if the   
option is set Jan 1, 1904. To change to the 1904 date system, click    
Options on the Tools menu, click the Calculation tab, and then select the  
1904 date system check box. This can also be changed within SAS    
using XML which will be shown later 
 
Consideration has to be given when importing non formatted dates 
 
Excel handles formatted dates correctly using the general format 
The following table shows the first date and the last date for each date 
system and the serial value associated with each date. 
Date 
system  
First date  
Last date  
1900 January 1, 1900 
(serial value 1) December 31, 9999 
(serial value 2958465)  
8
1904 January 2, 1904 
(serial value 1) December 31, 9999 
(serial value 2957003
Formatting Solutions 
There are various ways of getting around some of the cell formatting issues which we 
will discuss in the section below.  Most of the solutions will use the Microsoft Office 
specific CSS style sheet properties to format the cell values.  
Importing values as Text  
Importing the file as text using the Text format for the cell values allow the cell values to 
come over without any interpretation and does not strip the leading or trailing zeroes. 
Using the mso-number-format:\@ CSS style property allows the cell value to be 
imported using the Text format for Excel 2000 and above. For Excel 97, the CSS style 
property is vnd.ms-excel.numberformat. We can specify any of the many format 
understood by Excel, or just format the cells as text. 
Common Cell Formats 
mso-number-format:0                                            NO Decimals 
mso-number-format:"0\.000"                                  3 Decimals 
mso-number-format:"\#\,\#\#0\.000"             Thousand comma with 3 decimals  
mso-number-format:"mm\/dd\/yy"                           Date7 
mso-number-format:"mmmm\\ d\\\,\\ yyyy"             Date9 
mso-number-format:"m\/d\/yy\\ h\:mm\\ AM\/PM"   Date-time AMPM 
mso-number-format:"Medium Date"                       01-mar-98 
mso-number-format:"d\\-mmm\\-yyyy"                    01-mar-1998 
mso-number-format:"Short Time"                           5:16 
mso-number-format:"Medium Time"                       5:16 am 
mso-number-format:"Long Time"                            5:16:21:00 
mso-number-format:Percent                                   Percent 
mso-number-format:0%                                          No percent 
mso-number-format:"0\.E+00"                                Fractions 
mso-number-format:"\@"                                        Text 
mso-number-format:"\[<=9999999\]\#\#\#\\-\#\#\#\#\;\\\(\#\#\#\\\)\\ \#\#\#\\-\#\#\#\#"                                                            
Phone number 
9
Applying Cell Formats 
Excel 2000 Solution 
Text Format applied to all columns                             Text Format applied to the age field 
ODS HTML FILE=‘TEMP.HTML’ HEADTEXT=                               ODS HTML FILE=”TEMP.HTML HEADTEXT= 
“<STYLE> TD {MSO-NUMBER-FORMAT:\@}</STYLE>”;        ‘<Style> .Zero { mso-number-format:\@;}</Style>’; 
PROC PRINT DATA=SASHELP.CLASS;                                      PROC PRINT DATA=SASHELP.CLASS; 
RUN;                                                                                               VAR  AGE /  style={HTMLCLASS=”Zero”}; 
RUN;       
ODS HTML CLOSE;                                                                      ODS  HTML CLOSE; 
Excel 97 solution 
DATA ONE; 
X='0001'; 
RUN; 
ODS HTML FILE='TEMP.XLS'; 
PROC PRINT DATA=ONE; 
VAR X / STYLE={HTMLSTYLE="VND.MS-EXCEL.NUMBERFORMAT:@"}; 
RUN; 
ODS HTML CLOSE; 
Applying Cell Formats in the CSV destination 
To prevent losing the leading zeroes when using the CSV destination, an “=” 
can by added in front of the character string. This allows the fields to be read with the 
text format. This workaround also works with the HTML destination. The CSV tagset 
can also be modified to add the “=” before the data values.  
Syntax  to prevent losing the leading zeroes in the CSV destination 
/* Syntax to alter data value by pre-pending the “=”.  */ 
data one;                                                                                                                              
x='="00001"';                                                                                                                 
run;                                                                                                                                   
ods csv file='tempx.csv';                                                                                                              
proc print data=one;                                                                                                                   
run;                                                                                                                                   
ods csv close;   
/* PROC TEMPLATE code that modifies the default CSV tagset  by  appending the ‘=’  */ 
proc template;                                                                                                                           
define tagset Tagsets.test;                                                                                                           
parent=tagsets.csv;                                                                                                                
define event data;                                                                                                                 
put "," / if !cmp( COLSTART , "1" );                                                                                            
put '=' """" / if cmp( TYPE , "string" );                                                                                       
put VALUE;                                                                                                                      
put """" / if cmp( TYPE , "string" );                                                                                           
end;                                                                                                                               
10
end;                                                                                                                                  
run;                                                                                                                                  
data one; 
x='00001'; 
run;  
ods markup file='temp.csv' tagset=tagsets.test; 
proc print data=one; 
run; 
ods markup close; 
Specifying the Height and Width
When the height and width are set in SAS, they may be ignored by Microsoft Excel. If 
you set the height or the width, this adds the WIDTH= or HEIGHT= attributes to the 
HTML TD tag. If you are creating CSS style sheets it adds the WIDTH and  HEIGHT 
CSS style properties.  By default, the width of the cell will be the length of the largest 
value of the cell either in the browser or within the spreadsheet. To override this 
behavior, you can use the CELLWIDTH=  or the CELLHEIGHT=  style attributes to 
modify the width or the height.   
This all works fine when going to the browser, however, Excel is pretty picky.  If you are 
using the ODS HTML destination in SAS 8.2 or 9.0,  specifying titles, footnotes, or  
using By variables which creates bylines will cause Excel to ignore any height or width 
set.  This is because title, footnotes, and the by-lines are stored in HTML  tables within 
the ODS HTML destination.   The first  table in the spreadsheets sets the column width 
and the height for the cells. Since the titles, footnotes and by-lines are specified before all 
other tables,  all of the height and width information in the subsequent tables are negated.  
There are ways around this problem which I will discuss below.  
1. If you do not need titles in the output ,  you can use a null title statement and remove 
the titles from the output. This will prevent the cell width and the cell height from 
getting negated.   
TITLE; 
2. Using the ODS MARKUP destination provides the other solution.  Neither the 
HTMLCSS or the PHTML tagsets put the titles in HTML tables, therefore we do 
not run into the same problem that we do with the HTML destination. However,  
using tagsets has it own problem in that if you do not specify a unit of dimension, 
it automatically specifies .px(pixels).  This does not make Excel very happy when  
a unit of dimension is specified with the Width=  HTML attribute. To get around this, 
we are able to specify the WIDTH CSS style parameter which allows you to specify  
a unit of measure in Excel.  The PROC  TEMPLATE code is used to add the 
HTMLSTYLE  to the data event. 
Documents you may be interested
Documents you may be interested