“InsertAndCopyRange” method that does all of this and more (like copying rows from one 
file and inserting it into another) 
Other method that normally can be challenging to find is “AddSheet” as most sheet 
operations (including adding a new sheet) are in the “InsertAndCopySheets” method. 
The reason we kept it this way (few powerful methods instead of many specialized and 
simpler methods) is that less methods are easier to remember. From the editor, you just 
need to remember to start typing “InsertAnd…” and intellisense will show most options. No 
need to guess if the method to add a new sheet was named “AddSheet” or “InsertSheet”. 
By design XlsFile API is non Object Oriented
, and we need to keep the number of methods 
it provides reasonable. 
Naming probably isn’t the best either, this is for historical reasons (because original 
implementations did only insert and copy, and then, as we added more functionality it was 
added to those methods), but also because a better naming isn’t easy either. Calling a 
method InsertAndOrCopyCellsOrColumnsOrRanges() isn’t much better. So just remember 
that whatever you want to do, you can probably do it with one of the following methods: 
InsertAndCopyRange: Probably the most important of the manipulating methods. 
Inserts or copies or inserts and copies a range of cells or rows or columns from one 
sheet to the same sheet, or to a different sheet, or to a different file. It works exactly 
as Excel does, if you copy a formula “=A1” down to row 2, it will change to be 
“=A2”. Images and objects might or might not be copied too depending in the 
parameters to this method. 
MoveRange: Moves a range of cells, or a column or a row inside a sheet. 
DeleteRange: Deletes a range of cells, a row or a column in a sheet, moving the 
other cells left or up as needed. If InsertMode is NoneDown or NoneRight, cells will 
be cleared, but other cells won’t move. 
InsertAndCopySheets: Inserts and or copies a sheet. Use this method to add a new 
empty sheet.  
DeleteSheet: Deletes a number of sheets from the file. 
ClearSheet: Clears all content in a sheet, but leaves it in place. 
There are many reasons why we designed XlsFile to be non OO, but it is probably not worth 
discussing why here. In fact, XlsFile needs to flatten the OO model used inside the FlexCel engine, to 
provide a simpler procedural interface that can among other things be called from non OO 
Pdf searchable text converter - 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
text searchable pdf file; how to select text in pdf image
Pdf searchable text converter - 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
how to select text in pdf; pdf text search tool
Considerations about Excel 2007 support 
FlexCel 5.0 introduces basic support for Excel 2007 file format (xlsx), and also for the new 
features in it, like 1 million rows or true color. Some features are not yet supported in xlsx: no 
charts, or conditional format yet. We will be adding this functionality over the 5.x series. 
While most changes are under the hood, and we made our best effort to keep the API 
unchanged, some little things did change and could bring issues when updating: 
The number of rows by default in FlexCel is now 1048576, and the number of 
columns is 16384. This can have some subtle effects: 
Named ranges that were valid before might become invalid. For example, the 
name “LAB1” would be a valid cell reference in 2007 mode, (Just like “A1”). In 
Excel 2003 you can have up to column “IV”, but in Excel 2007 you can have up 
to column “XFD”, so almost any combination of 3 characters and a number is 
going to be a valid cell reference, and thus can’t be a name. If you have issues 
with this and can’t change the names, you will have to use the “Compatibility 
mode” by setting the static variable: 
“Full Ranges” might become partial. Full ranges have the property that they 
don’t shrink when you delete rows. That is, if for example you set the print area 
to be A1:C65536 in Excel 2003, if you delete or insert rows the range will stay the 
same. If you open this file with FlexCel 5 or Excel 2007, and delete the row 1, the 
range will shrink to A1:C65535, as it is not full anymore. To prevent this, FlexCel 
automatically converts ranges that go to the last row or column in an xls file to 
go to the last row or column in an xlsx file. If you don’t want FlexCel to 
autoexpand the ranges, you can change this setting with the static variable: 
XlsFile. KeepMaxRowsAndColumsWhenUpdating 
Also, when using XlsFile, use references like “=sum(a:b)” to sum in a column 
instead of “=sum(a1:b65536)” 
Conditional Formats might become invalid. This is a limitation on how 
Conditional Formats are stored in an xls file. They are stored as a complement-2 
of 2 bytes for the rows and one byte for the column. For example, if you have a 
formula in a conditional format that references the cell in the row above, this 
will be stored as “0xFFFF”, which is the same s “-1” if you are using signed math.  
And as you have exactly 2 bytes of rows and 1 byte of columns they are also 
the same. It is the same to add 65535 rows (wrapping) or to subtract one, you 
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
document to editable & searchable text file. Different from other C# .NET PDF to text conversion controls, RasterEdge C# PDF to text converter control toolkit
pdf searchable text converter; how to search a pdf document for text
Online Convert PDF to Text file. Best free online PDF txt
document to editable & searchable text file. Different from other C# .NET PDF to text conversion controls, RasterEdge C# PDF to text converter control toolkit
select text in pdf file; how to select all text in pdf file
will always arrive to the cell above. Now, with more columns and rows this is not 
true anymore. And you can’t know by reading a file if the value was supposed 
to mean “-1” or “+65535”. So both Excel and FlexCel might interpret a CF 
formula wrong when the cells are separated by too many rows or columns.  
Again the solution if you have this issue is to turn “ExcelFile.ExcelVersion” back to 
Colors are now true color, not indexed. 
In order to support it, we needed to change all “Object.ColorIndex” properties 
to “Object.Color”, so code won’t compile right away. You need to do a search 
and replace for “ColorIndex” properties. See the section about colors in this 
document for more information about colors and themes. 
If you relied in changing the palette to change cell colors, this code might 
break. Before, you had only indexed colors, so if you changed the palette color 
3 from red to blue, all red cells would turn blue. Now, color will only change if 
the cell has indexed color. You might have a cell with the exact same read but 
with color specified as RGB, and this won’t change when you change the 
palette. It is recommended that you use themes in situations like this now. 
Default File Format for Saving: In version 4 finding the default file format for saving 
was simple, it saved in xls. Now, it isn’t so simple. By default, if you do a simple 
xls.Save(filename) without specifying a file format we will use the file extension to 
determine it. When it is not possible (for example if you are saving to a stream) we 
will use the format the file was originally in when you loaded it. If you prefer to 
change the default, you can change the static property  
ExcelFile. DefaultFileFormat 
Headers and footer changes: Now headers and footers can be set differently for 
odd/even pages, or for the first page. While the properties 
PageHeader/PageFooter still exist in XlsFile, you are advised to use 
GetPageHeaderAndFoooter and SetPageHeaderAndFooter instead for better 
control. Also the method to change the images in the headers and footers 
changed to accept these different possibilities. Look at APIMate to see how to use 
these new methods. 
VB.NET PDF Convert to Text SDK: Convert PDF to txt files in vb.net
Text in any PDF fields can be copied and pasted to .txt files by keeping VB.NET control for batch converting PDF to editable & searchable text formats.
search pdf files for text; pdf text search
VB.NET Image: Robust OCR Recognition SDK for VB.NET, .NET Image
for VB.NET provides users fast and accurate image recognition function, which converts scanned images into searchable text formats, such as PDF, PDF/A, WORD
cannot select text in pdf file; convert pdf to word searchable text
Autofitting Rows and Columns  
FlexCel offers support for “autofitting” a row or a column, so it expands or shrinks 
depending on the data on the cells. 
But autofitting is not done automatically, and we have good reasons for it to be this way. 
So, to explain this better, let's try a simple example: 
1) Imagine that we create a new Excel File, write “Hello world” on cell A1, and go to 
“Format->Column->AutoFit Selection”. We will get something like this: 
2) As you see, column “A” was resized so “Hello World” fits inside. Easy, isn't it? Well, not as 
much as we would like it to be. Let's now change the zoom to 50%: 
3) Now the text “Hello world” is using part of column “B”. We didn't change anything 
except the zoom and now text does not fit anymore, in fact, you can autofit it again and 
column “A” will get bigger. 
What happened here? The easy answer is that Excel is resolution dependent. Fonts scale in 
“steps”, and they look different at different resolutions. What is worse, printing also changes 
depending on the printer, and as a thumb rule, it is not similar at what you see on the 
C# Create PDF Library SDK to convert PDF from other file formats
The PDF document file created by RasterEdge C# PDF document creator library is searchable and can be fully populated with editable text and graphics
how to make a pdf file text searchable; select text in pdf reader
C# PDF: C# Code to Draw Text and Graphics on PDF Document
Draw and write searchable text on PDF file by C# code in both Web and Windows applications. C#.NET PDF Document Drawing Application.
search pdf for text in multiple files; search text in multiple pdf
So, what should a FlexCel autofit do? Make column A the width needed to show “Hello 
world” at 100% zoom, 96 dpi screen resolution? Resize column A so “Hello world” shows fine 
when printing? On a dot matrix printer? On a laser printer? Any answer we choose will lead 
us to a different column width, and there is no really “correct” answer. 
And it gets better. FlexCel uses GDI+, not GDI for rendering and calculating metrics, and 
GDI+ is resolution independent. But GDI and GDI+ font metrics are different, for example 
the space between letters on GDI+ for a font might be less than the space GDI gives to 
them. You will need less column width to fit “Hello world” on GDI+ than in GDI for that font, 
so the width calculated by FlexCel(GDI+) will be less than the width calculated by 
As you can imagine, if we used all this space to describe the problem, is because there is 
not a real solution. Autofit on FlexCel will try to adapt row heights and column widths so the 
text prints fine from Excel on a 600 dpi laser printer, but text might not fit exactly on the 
screen. Autofit methods on FlexCel also provide a “Adjustment” parameter that you can 
use to make a bigger fit. For example, using 1.1 as adjustment, most text will display inside 
the cells in Excel at normal screen resolution, but when printing you might find whitespace 
at the border, since columns or rows are bigger than what they need to be. 
Of course, autofit on FlexCel will work fine when printing from FlexCel, since FlexCel is 
resolution independent and it should be always the same. The problem arises when 
opening the files in Excel. 
And this was the reason we do not automatically autofit rows (as Excel does). Because of 
the mentioned differences between GDI+ and GDI (and also between GDI at different 
resolutions), we cannot calculate exactly what Excel would calculate. If we calculated the 
row height must be “149” and Excel calculated “155”, as all rows are by default 
autoheight, just opening an Excel file on FlexCel would change all row heights, and 
probably move page breaks. Due to the error accumulation, maybe on FlexCel you can 
enter one more row per page, and the header of the new page could land in the bottom 
of the previous. 
The lesson, do the autofit yourself when you need to and on the rows that really need 
autofit(most don't). If you are using XlsFile, you have XlsFile.Autofit... methods that you can 
use for that. If you are using FlexCelReport, use the <#Row Height(Autofit)> and <#Column 
Width(Autofit)> tags to autofit the rows or columns you want.  
By default, Excel autofits all rows. So, when opening the file in Excel, it will re calculate row 
heights and show them fine. But when printing from FlexCel, make sure you autofit the rows 
you need, since FlexCel will not automatically do that. 
VB.NET Create PDF from Text to convert txt files to PDF in vb.net
Best VB.NET adobe text to PDF converter library for Visual Studio .NET project. Batch convert editable & searchable PDF document from TXT formats in VB.NET
pdf text select tool; how to select text in pdf and copy
C# Create PDF from Text to convert txt files to PDF in C#.net, ASP
PDF converter SDK for converting adobe PDF from TXT in Visual Studio .NET project. .NET control for batch converting text formats to editable & searchable PDF
select text in pdf; pdf text searchable
Autofitting Merged Cells 
Merged cells can be difficult to autofit, for two basic reasons: 
If you are autofitting a row, and a merged cell spans over more than one row, 
which row should be expanded to autofit the cell? Imagine we have the following: 
We could make the text fit by enlarging for example row 1, or row 5: 
We could also enlarge all rows by the same amount instead of changing only one 
FlexCel by default will use the last row of the merged cell to autofit, since in our 
experience this is what you will normally need. But you can change this behavior by 
changing the parameter “autofitMerged” when you call the “Autofit” methods, or, 
if you are using reports, you can use the <#Autofit settings> tag to do so. Note: All 
the above was done in rows for simplicity, but it applies the same to columns and 
merged cells over more than one column. 
The second issue is that probably because of issue 1, Excel will never autofit merged 
cells. Even in cases where there would be no problem doing so, for example you 
are autofitting a row and the merged cell has only one row (but 2 columns). In all of 
those cases, Excel will just make the row the standard height. So, if you apply 
FlexCel autofitting but leave the autofit on, when you open the file in Excel, Excel 
will try to re-autofit the merged cell, and you will end up with a single row always. 
So, when autofitting rows with merged cells in FlexCel make sure you set autofitting 
off for Excel. You don’t need to do this for columns, since they don’t autofit in Excel. 
VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
less searchable for search engines. The other is the crashing problem when user is visiting the PDF file using web browser. Our PDF to HTML converter library
pdf find and replace text; how to search pdf files for text
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Export all Word text and image content into high quality PDF without losing formatting. Easy to create searchable and scanned PDF files from Word.
converting pdf to searchable text format; search text in pdf image
Preparing for Printing 
After creating a spreadsheet, one thing that can be problematic is to make it look good 
when printing or exporting to PDF. 
Making the sheet fit in one page of  width 
This is probably the first thing you should do when preparing most documents for printing. 
Go to the “Page Layout” tab in the ribbon, and look at the “Width” and “Height” boxes 
Make the “Height” box “Automatic, to allow your document have as many pages as it 
needs. You can do this directly in Excel when using Templates to create your documents, 
or you can do this in FlexCel API by setting XlsFile.PrintToFit = true, 
XlsFile.PrintNumberOfHorizontalPages =  1, and XlsFile.PrintNumberOfVerticalPages = 0. 
Repeating Rows and Columns at the top 
Other useful thing you can do is press the “Print Titles” button to access the “Page Setup” 
dialog. There you can setup some rows and columns to be repeated in every page.  
This way your tables can keep their headers in every page. By the way, while you are in the 
“Sheet” tab, you might want to look at the option to print the gridlines or the column and 
row headings (The “A”, “B”, etc. at the top and “1”, “2”, etc. numbers at the left of the 
You can do this directly in Excel when using Templates to create your documents, or you 
can do this in FlexCel API by doing: 
InternalNameRange.Print_Titles),1, 0, "=1:2,A:B")); 
to set up the rows and columns to repeat, or set XlsFile.PrintGridLines = true and 
XlsFile.PrintHeadings = true to set up printing of gridlines and headings. 
Using Page Headers/Footers 
Besides repeating rows and columns, you can also add headers and footers from the page 
setup dialog. One interesting feature in Excel XP or newer is the ability to include images in 
the page headers or footers. As those images can be transparent, you can have a lot of 
creative ways to repeat information in every sheet. 
From FlexCel API, use the XlsFile.PageHeader and PageFooter properties to set the header 
and footer text. If using a template, you can just set those things in the template. 
Intelligent Page Breaks 
Excel offers the ability to include page breaks, but it has no support for any kind of “smart” 
page breaks that will only break if there is a need for it. 
Let's look at an example: 
Here, the image in page 3 is being cut in the middle by a page break, so part of it appears 
at page 3 and part at page 4. While this is no problem when looking at the spreadsheet in 
Excel, it is clearly not what we want when printing or exporting to PDF. We want to place a 
page break before that image, so it prints completely in page 4. But we don't want to put 
a break before the next image, since it can print also in page 4. We need page breaks 
that only apply when the image does not fit in the current page. 
FlexCel offers a way to deal with this. In short, you need to say which rows or columns you 
would like to keep together by calling XlsFile.KeepRowsTogether or 
XlsFile.KeepColsTogether, and once you have finished creating your file, call 
XlsFile.AutoPageBreaks to paginate your whole document and create page breaks in a 
way your rows and columns are kept together as much as possible.  
Note: The call to AutoPageBreaks must be the last before saving your file, 
so the document is in its final state. If you insert rows or autofit things after 
calling AutoPageBreaks then the page breaks will be moved out of 
place. Remember that this is not an Excel feature, so it is simulated by 
dumb page breaks in Excel, and once set, those page breaks will remain 
at where they were. 
The Widow / Orphan problem 
When paginating a document there are actually two similar but different things: Widow 
and orphan lines. In the example above we saw orphan rows, that is, rows that have their 
“parents” in the previous sheet. But there are also widow lines, and those are rows that are 
alone in a sheet because the lines below are in a different group, as shown in the following 
In this example, sheet 6 is almost empty, because there is only one line 
from the current group on it, and the next group starts at the next page. 
When there is so little written in one page, you will normally want to start 
the next group in the same page instead of having an empty sheet. 
And you can control this in FlexCel with the “PercentOfUsedSheet” 
parameter when you call AutoPageBreaks. PercentOfUsedSheet defaults 
at 20, which means that in order to add a page break, the page must be 
filled in at least 20%. 
In the example at the left, no page break would be made in page 6, 
since the 20% of the sheet has not been used yet, and so the next group 
would start at page 6 too. If you set the PercentOfUsedSheet parameter 
to 0% there will be no widow control, and the next group will start at page 
Setting it at 100% means no widow or orphan control at all, since in order to set a page 
break the 100% of the page must have been used, so FlexCel has no margin to add the 
page breaks. It will not be able to set the page break somewhere before the 100% of the 
page, so all page breaks will be set at the last row, and it will not be able to keep any rows 
together. You are advised to keep this parameter around 20% 
The different printers problem 
As explained in the “Autofitting Rows and Columns” section, Excel prints different things to 
different printers, and even with the same paper size, some printer have different printing 
sizes. This can be problematic, since a document calculated to have breaks every 30 cm, 
will have a lot of widow lines if printed in a page with an effective 29 cm printing area: 
Image 1: Page with 30 cm print area               Image 2: Page with 29 cm print area 
As you can see in the images above, reducing a little the page height might cause the last 
row not to enter on that page and be printed in the next. As FlexCel added an automatic 
page break after that row (so it would break correctly with the 30 cm it used for the 
calculation), you end up with an empty page with only one row.  
To solve this issue, the second parameter to AutoPageBreaks is the percentage of the 
page that will be used by FlexCel to calculate the page breaks. It defaults at 95%, which 
means that it will consider a page 30 cm tall to be 30*0.95 = 28.5 cm, and calculate the 
page breaks for that sheet. So it will print correctly in a 29 cm sheet. 
When calculating the page breaks to directly export to PDF you can keep this parameter 
at 100%, since FlexCel is resolution independent, and it will not have this issues. But when 
calculating the page breaks to print from Excel, you need to have a smaller value here so 
it can fit in all the printers you might print this sheet from. Normally if targeting only laser 
printers you can have a larger value like 99%, but when other kind of printers can be used it 
might be wise to lower this value. 
Documents you may be interested
Documents you may be interested