how to open pdf file on button click in c# : Search multiple pdf files for text control application platform web page html .net web browser SAS050-20140-part1144

Paper SAS050-2014 
Creating Multi-Sheet Microsoft Excel Workbooks with SAS
®
: The Basics 
and Beyond Part 1 
Vincent DelGobbo, SAS Institute Inc., Cary, NC 
ABSTRACT 
This presentation explains how to use Base SAS
®
9 software to create multi-sheet Microsoft Excel 
workbooks.  You learn step-by-step techniques for quickly and easily creating attractive multi-sheet Excel 
workbooks that contain your SAS
®
output using the ExcelXP ODS tagset.  The techniques can be used 
regardless of the platform on which SAS software is installed.  You can even use them on a mainframe!  
Creating and delivering your workbooks on-demand and in real time using SAS server technology is 
discussed.  Although the title is similar to previous presentations by this author, this presentation contains 
new and revised material not previously presented. 
INTRODUCTION 
This paper explains how to use Base SAS 9.1.3 or later to create the Excel workbook shown in Figure 1. 
Figure 1.  Multi-Sheet Excel Workbook Generated by the ExcelXP ODS Tagset 
The workbook includes four worksheets containing fictional lab results data over time for a single patient.  
An Excel format, not a SAS format, is used to control the appearance of the datetime values.  You can 
download a copy of the code and data used in this paper from the SAS Presents Web site at 
support.sas.com/saspresents.  Find the entry "Creating Multi-Sheet Microsoft Excel Workbooks with 
SAS
®
: The Basics and Beyond Part 1". 
Search multiple pdf files for text - search text inside PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn how to search text in PDF document and obtain text content and location information
find and replace text in pdf file; select text in pdf file
Search multiple pdf files for text - VB.NET PDF Text Search Library: search text inside PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn How to Search Text in PDF Document and Obtain Text Content and Location Information in VB.NET application
pdf text searchable; how to select text on pdf
2
The code in this paper was tested using SAS 9.3 and Microsoft Excel 2010 software. 
REQUIREMENTS 
To use the techniques described in this paper, you must have the following software: 
Base SAS 9.1.3 Service Pack 4 or later, on any supported operating system (z/OS, UNIX, etc.) 
and hardware. 
Microsoft Excel 2002 or later (also referred to as Microsoft Excel XP). 
LIMITATIONS 
Because the ExcelXP ODS tagset creates files that conform to the Microsoft XML Spreadsheet 
Specification, you can create multi-sheet Excel workbooks that contain the output from almost any SAS 
procedure.  The exception is that the Microsoft XML Spreadsheet Specification does not support images, 
so the output from graphics procedures cannot be used (Microsoft Corporation 2001). 
You can use ExcelXP tagset options with all procedure output, but ODS style overrides apply only to the 
PRINT, REPORT, and TABULATE procedures.  Tagset options and style overrides are discussed in the 
sections "Understanding and Using the ExcelXP Tagset Options" and "Understanding and Using ODS 
Style Overrides", respectively. 
You cannot use the techniques described in this paper to update existing workbooks; ODS creates the 
entire document on each execution, and cannot alter existing workbooks. 
SAMPLE DATA 
Table 1 presents an abbreviated list of column properties for the LabResults SAS table that is used to 
create the Excel workbook shown in Figure 1.  An asterisk (*) is used as a split character in some variable 
labels to control text wrapping in the column headings, and the values in the VISIT_DATETIME column 
are SAS datetime values. 
Column 
Name 
Column 
Label 
Column 
Type 
Typical Values 
LBCAT 
Category for Lab 
Test 
Character 
CHEMISTRY, HEMATOLOGY, OTHER, 
URINALYSIS 
VISITNUM 
Visit 
Numeric 
1, 4, 8, 10, 13 
VISIT 
Visit*Name 
Character 
LAB BASELINE, WEEK 2, WEEK 4, WEEK 26 
VISIT_DATETIME  Collection*Date/Time  Numeric 
1703688300, 1707828960, 1719920700 
LBTESTCD 
Test 
Character 
BILI, CHOL, EOS, WBC 
LBORRES 
Result 
Character 
0.05, 0.9, 1.013, 8.8, 15, 140 
LBORRESU 
Units 
Character 
%, MILL/uL, NO UNITS, g/dL, pg/ml 
RANGE 
Range 
Character 
1.006 - 1.03, 21 - 169, 156 - 300, not available 
LBNRIND 
<blank> 
Character 
A, H, L, N 
Table 1.  Column Properties and Representative Data Values for the LabResults SAS Table 
OUTPUT DELIVERY SYSTEM (ODS) BASICS 
ODS is the part of Base SAS software that enables you to generate different types of output from your 
procedure code.  An ODS destination controls the type of output that is generated (HTML, RTF, PDF, 
etc.).  An ODS style controls the appearance of the output.  In this paper, we use a type of ODS 
destination, called a tagset, that creates XML output that can be opened with Excel.  This tagset, named 
ExcelXP, creates an Excel workbook that has multiple worksheets. 
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Divide PDF file into multiple files by outputting PDF file size. Split Split PDF Document into Multiple PDF Files Demo Code in VB.NET. You
search pdf files for text programmatically; find text in pdf image
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
VB.NET Demo code to Combine and Merge Multiple PDF Files into One. This part illustrates how to combine three PDF files into a new file in VB.NET application.
pdf searchable text; text searchable pdf
3
The Excel workbook in Figure 1 was created using the ExcelXP ODS tagset and the PRINTER ODS style 
supplied by SAS.  The ExcelXP tagset creates an XML file that, when opened by Excel, is rendered as a 
multi-sheet workbook.  All formatting and layout are performed by SAS; there is no need to "hand-edit" 
the Excel workbook.  You simply use Excel to open the file created by ODS. 
Here are the general ODS statements needed to generate XML output that is compatible with Excel 2002 
and later: 
 ods _all_ close; 
 ods tagsets.ExcelXP file='file-name.xml' style=style-name ... ; 
*  Your SAS procedure code here; 
 ods tagsets.ExcelXP close; 
The first ODS statement (
) closes all destinations that are open, because we want to generate only 
XML output for use with Excel. 
The second ODS statement (
) uses the ExcelXP tagset to generate the XML output and then store the 
output in a file.  You should use the "xml" extension instead of "xls" or "xlsx", because Excel 2007 and 
2010 display a warning if the "xml" extension is not used (Microsoft Corporation 2014b).  The STYLE 
option controls the appearance of the output, such as the font and color scheme.  To see a list of ODS 
styles that are available for use at your site, submit the following SAS code: 
ods _all_ close; 
ods listing;   
proc template; list styles; run; quit; 
To find the SAS code that generates sample output for the ODS styles available on your system, click the 
Full Code tab in SAS Sample 36900 (SAS Institute Inc. 2009). 
The third ODS statement (
) closes the ExcelXP destination and releases the XML file so that it can be 
opened with Excel. 
Although you can store your output on a local disk (where SAS software is installed), or on a network-
accessible disk, here are some good reasons to store your SAS output on a Web server: 
The files are available to anyone who has network access. 
The XML files can be accessed by Web-enabled applications other than Excel. 
You can take advantage of Web server authentication and security models. 
Note: If you place the files where users can access them over a network, you should set file permissions 
to prevent accidental alteration. 
OPENING THE OUTPUT WITH EXCEL 
To open an ODS-generated file that is stored on a Web server, follow these steps: 
1.  In Excel 2002, 2003, or 2010, select 
File  Open
In Excel 2007 select 
Office Button  Open
2.  In the 
File name
field, specify the full URL for the file that you want to open.  For example,  
http://Web-server/directory/file-name.xml
3.  Click 
Open
to import the XML file. 
To open ODS-generated files from a local or network-accessible disk, follow the same steps, except in 
step 2 you should either navigate to the file or enter the path and filename in the 
File name
field.  You 
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
deleting, PDF document splitting, PDF page reordering and PDF page image and text extraction C# Demo Code: Combine and Merge Multiple PDF Files into One in .NET.
pdf searchable text converter; pdf text select tool
C# PDF File Split Library: Split, seperate PDF into multiple files
pages. Divide PDF file into multiple files by outputting PDF file size. Split outputFiles); Split PDF Document into Multiple PDF Files in C#. You
how to make a pdf file text searchable; find text in pdf image
4
can also navigate to the file using Microsoft Windows Explorer, and then double-click the file to open it 
with Excel. 
Excel reads and converts the XML file to the Excel format.  After the conversion, you can perform any 
Excel function on the data.  To save a copy of the file in Excel binary (xls) format using Excel 2002, 2003, 
or 2010, select 
File  Save As
and then, from the 
Save as type
drop-down list, select 
Microsoft 
Excel Workbook (*.xls)
 If you're using Excel 2007, click the Microsoft Office Button, and then 
select 
Save As  Excel 97-2003 Workbook
. If you're using Excel 2007 or 2010 and want to save 
the document in the Microsoft Office Open XML format, choose 
Excel Workbook (*.xlsx)
from the 
Save as type
drop-down list. 
UPDATING THE EXCELXP TAGSET 
The version of the ExcelXP tagset that is shipped with Base SAS is periodically updated.  There is 
currently no notification system for tagset updates.  To ensure that you have a recent version, compare 
the ExcelXP tagset version, displayed in the SAS log whenever the tagset is used, to the version 
available on the ODS Web site (SAS Institute Inc. 2014a). 
Submit this code to display the tagset version number in the SAS log: 
filename temp temp; 
ods tagsets.ExcelXP file=temp; 
ods tagsets.ExcelXP close; 
filename temp clear; 
All the code in this paper uses an up-to-date version of the ExcelXP tagset.   If you're using a tagset that's 
more than 2 or 3 versions old, consider upgrading by following the steps below.  Otherwise, continue to 
the next section. 
The first step in upgrading your tagset is to define the location where the tagset will be stored on your 
system with these two statements: 
 libname mylib 'some-directory'; * Location to store the tagset; 
 ods path (prepend) mylib.tmplmst(update); 
The LIBNAME statement (
) specifies where to store the compiled tagset.  Although you can temporarily 
store the tagset in the WORK library, it is more efficient to compile it once, and then store it in a 
permanent library so that you can reference it in other SAS programs. 
The ODS PATH statement (
) specifies the locations of, and the order in which to search for, ODS 
tagsets and styles.  Notice that the access mode for 
mylib.tmplmst
is specified as "update" and it is 
first in the search path as a result of the PREPEND option.  Because ODS searches the path in the order 
given, and the access mode for 
mylib.tmplmst
is 
update
, the compiled tagset is stored in a file 
named tmplmst.sas7bitm in the directory that is associated with the MYLIB library. 
Submit this code to display the ODS search path: 
ods path show; 
Once you have issued the appropriate ODS PATH statement (
), you can import an updated version of 
the ExcelXP tagset and use it in your SAS programs.  The version of the tagset used in this paper can be 
found in the download package on the SAS Presents Web site at support.sas.com/saspresents.  Find the 
C# Create PDF from CSV to convert csv files to PDF in C#.net, ASP.
CSV file to one PDF or splitting to multiple PDF documents. If you need to convert CSV to PDF document, it's unnecessary to convert CSV files to .xls or
text searchable pdf file; find and replace text in pdf file
VB.NET PDF Convert to SVG SDK: Convert PDF to SVG files in vb.net
& Page Process. File: Merge, Append PDF Files. File: Split NET rotate PDF pages, C#.NET search text in PDF to convert both single and multiple PDF document pages
convert a scanned pdf to searchable text; search a pdf file for text
5
entry "Creating Multi-Sheet Microsoft Excel Workbooks with SAS
®
: The Basics and Beyond Part 1".  The 
download package contains a file named ExcelXP.sas that contains the SAS code for compiling the 
ExcelXP tagset.  Save a local copy of this file, and then submit the following SAS code to make the tagset 
available: 
%include 'ExcelXP.sas';  * Specify the path to the file, if necessary; 
You need to submit this code only once.  The ExcelXP tagset is compiled and stored in the directory 
corresponding to the MYLIB library.  To give all of your future SAS programs access to the tagset, specify 
"read" access in the LIBNAME and in the ODS PATH statements: 
libname mylib 'some-directory' access=read; * Location to store the tagset; 
ods path (prepend) mylib.tmplmst(read); 
See SAS Usage Note 32394 for additional information about updating tagsets (SAS Institute Inc. 2014b). 
USING ODS TO CREATE THE MULTI-SHEET EXCEL WORKBOOK 
Here is a listing of the basic SAS code used to create the Excel workbook.  
ods _all_ close; 
ods tagsets.ExcelXP file='LabResults.xml' style=Printer; 
title 'Lab Results for Subject 01-701-1015'; 
footnote; 
proc report data=sample.LabResults nowd split='*'; 
by lbcat; 
column visitnum  visit     visit_datetime  lbtestcd  lborres  
lborresu  lbornrlo  lbornrhi        range     lbnrind; 
define visitnum       / order    center 'Visit'; 
define visit          / order    center 'Visit*Name';  
define visit_datetime / order    left   'Collection*Date/Time' 
format=e8601dt.; 
define lbtestcd       / display  left   'Test'; 
define lborres        / display  right  'Result'; 
define lborresu       / display  right  'Units'; 
define lbornrlo       / noprint; 
define lbornrhi       / noprint; 
define range          / computed right  'Range'; 
define lbnrind        / display  center ''; 
compute range / char length=13; 
if (compress(lbornrlo) ne '' and compress(lbornrhi) ne '')  
then range = strip(lbornrlo) || ' - ' || strip(lbornrhi); 
else range = 'not available'; 
endcomp; 
compute lbnrind; 
if (upcase(lbnrind) eq 'N') then lbnrind = ''; 
endcomp; 
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
& pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET search text in PDF, C# Turn multiple pages PDF into multiple jpg files
pdf text search tool; how to select text on pdf
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
NET control to export Word from multiple PDF files in VB. Create editable Word file online without email. Supports transfer from password protected PDF.
select text in pdf file; how to select text in pdf image
6
compute after visitnum; 
line ''; 
endcomp; 
run; quit; 
ods tagsets.ExcelXP close; 
As you can see in the ODS statement (
), the ExcelXP tagset generates the output, and the PRINTER 
style controls the appearance of the output.  By default, the ExcelXP tagset creates a new worksheet 
when a SAS procedure creates new tabular output.  PROC REPORT (
) is run with a BY statement and 
creates four tables, one for each distinct value of the LBCAT variable.  Each table is created in a separate 
worksheet. 
The COLUMN statement specifies the order to display the columns, and the column roles, justification, 
labels, and formats are specified in the DEFINE statements (
).  The LBORNRLO and LBORNRHI 
columns are not displayed in the output, but are used to compute the value of the RANGE column. 
The first COMPUTE block (
) constructs the range if both low and high values are available for the test, 
otherwise "not available" is used for the value.  The second block (
) suppresses the display of the 
LBNRIND value for tests with normal results, and the third block (
) inserts a blank line between office 
visits. 
The last ODS statement (
) closes the ExcelXP destination and releases the XML file so that it can be 
opened with Excel. 
Figure 2 displays the results of executing the basic SAS code, and then opening the resulting 
LabResults.xml file with Excel.  Notice that Figure 2 does not match Figure 1.  The following problems are 
exhibited in Figure 2: 
1.  Unattractive, default worksheet names are used. 
2.  Title text is missing. 
3.  Standard BY line text ("Category for Lab Test=CHEMISTRY") precedes the table. 
4.  The collection date and time values are displayed differently. 
We can now change the basic SAS code to correct these problems.  The complete SAS code used to 
create the workbook shown in Figure 1 is listed in the section "The Final SAS Code". 
C# Create PDF from images Library to convert Jpeg, png images to
for combining multiple image formats into one or multiple PDF file in C# This example shows how to build a PDF document with three image files (BMP, JPEG
cannot select text in pdf file; select text in pdf reader
7
Figure 2.  Initial ODS ExcelXP Tagset-Generated Workbook 
UNDERSTANDING AND USING THE EXCELXP TAGSET OPTIONS  
The ExcelXP tagset supports many options that control both the appearance and functionality of the 
Excel workbook.  Many of these tagset options are simply tied directly into existing Excel options or 
features.  Tagset options are specified in an ODS statement using the OPTIONS keyword: 
ods tagsets.ExcelXP options(option-name1='value1'        
option-name2='value2' ...) ... ; 
Note that the value that you specify for a tagset option remains in effect until the ExcelXP destination is 
closed or the option is set to another value.  Because multiple ODS statements are allowed, it is good 
practice, in terms of functionality and code readability, to explicitly reset tagset options to their default 
value when you are finished using them.   
For example: 
ods tagsets.ExcelXP file='file-name.xml' style=style-name ... ; 
ods tagsets.ExcelXP options(option-name='some-value'); 
*  Some SAS procedure code here; 
ods tagsets.ExcelXP options(option-name='default-value'); 
*  Other SAS procedure code here; 
ods tagsets.ExcelXP close; 
8
When specifying additional ODS statements as shown above, do not specify the FILE, STYLE, or any 
other keyword or option that is supported by ODS.  Those options should be specified only in the initial 
ODS statement. 
To see a listing of the supported options, submit the following SAS code: 
filename temp temp; 
ods tagsets.ExcelXP file=temp options(doc='help'); 
ods tagsets.ExcelXP close; 
filename temp clear; 
The tagset information is printed to the SAS log.  For your convenience, a listing of the supported options 
is included in the download package for this paper. 
Tagset options are supported for all SAS procedure output, unlike ODS style overrides, which are 
supported only by the PRINT, REPORT, and TABULATE procedures. 
USING BY GROUP VALUES IN THE WORKSHEET NAMES 
ODS generates a unique name for each worksheet, as required by Excel.  Figure 2 shows the worksheet 
names that result from running the initial SAS code.  There are, however, several tagset options that you 
can use to alter the names of the worksheets. 
The SHEET_INTERVAL option controls the interval at which SAS output is placed into worksheets, and 
SHEET_LABEL is used to specify the prefix for the worksheet names.  When used together, the current 
value of the first BY variable is used in the worksheet name.  The following code causes the worksheet 
names to match those shown in Figure 1: 
ods tagsets.ExcelXP file='LabResults.xml' style=Printer; 
title '...'; footnote; 
ods tagsets.ExcelXP options(sheet_interval='bygroup' 
sheet_label=' ');  
proc report data=sample.LabResults nowd split='*'; 
by lbcat; 
column ... ; 
define ... ; 
compute ... ; 
run; quit; 
ods tagsets.ExcelXP close; 
The blank space between the quotation marks for the SHEET_LABEL option suppresses the printing of a 
prefix.  If you want a particular text string to precede the BY variable value, specify that text between the 
quotation marks. 
Because tagset options remain in effect until their value is changed or the destination is closed, the 
SHEET_INTERVAL, SHEET_LABEL, and any other options specified in this ODS statement affect all four 
worksheets, 
9
INCLUDING TITLE TEXT IN THE WORKSHEET BODY  
By default, SAS titles and footnotes appear as Excel print headers and print footers, respectively, which 
are displayed when the Excel document is printed.  You can confirm this by viewing the Excel 
Header/Footer tab in the Page Setup dialog box, shown in Figure 3. 
Figure 3.  Excel Page Setup Dialog Box Showing Title Text 
To include title text on-screen, in the worksheet body, use the EMBEDDED_TITLES option: 
ods tagsets.ExcelXP file='LabResults.xml' style=Printer; 
title '...'; footnote; 
ods tagsets.ExcelXP options(sheet_interval='bygroup' 
sheet_label=' ' 
embedded_titles='yes');  
proc report data=sample.LabResults nowd split='*'; 
by lbcat; 
column ... ; 
define ... ; 
compute ... ; 
run; quit; 
ods tagsets.ExcelXP close; 
10
A partial view of the resulting output is shown in Figure 4. 
Figure 4.  ODS ExcelXP Tagset-Generated Workbook with TITLE Statement Text in the Document 
SUPPRESSING THE BY LINE TEXT 
BY line text appears in the worksheets because the REPORT procedure is executed with a BY statement.  
However, this text is redundant because the BY value is displayed in the worksheet name.  To omit the 
BY line text, specify the SUPPRESS_BYLINES option in the ODS statement: 
ods tagsets.ExcelXP options(sheet_interval='bygroup' 
sheet_label=' ' 
embedded_titles='yes' 
suppress_bylines='yes');  
Do not use the NOBYLINE system  option, because this disables BY group processing in the ExcelXP 
tagset, even though the SHEET_INTERVAL tagset option is set to "bygroup". 
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 5 shows the locations 
that are pertinent to the REPORT procedure output (SAS Institute Inc. 2008).  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 
REPORT code alters 3 attributes of the COLUMN location for the MYVAR variable: 
define myvar / style(column)=[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.  Because of these drawbacks, inline style overrides should be 
used sparingly. 
Documents you may be interested
Documents you may be interested