# Release Notes for Version 2.2.0

Detailed release notes for DsExcel version 2.2.0

## Content



## Enhancements from the Previous Release

The following features have been added with this version of the product.

*   Excel files with shapes can be exported to PDF.
*   Ranges between different workbooks can be copied.
*   Worksheet between different workbooks can be copied or moved.
*   Adjusting page breaks after inserting or deleting rows or columns can be controlled.
*   The row, column or cell delimiter can be customized while loading or saving a CSV file.
*   The tail repeated rows and right repeated columns can be set when saving to PDF.
*   Paste options are supported during copying and pasting ranges.
*   IRange.Find() and IRange.Replace() methods are supported.
*   Different kinds of pivot table styles can be shown or hidden.
*   Pivot table styles can be exported to PDF.
*   The number format setting for each pivot field is supported.
*   Japanese ruby characters can be preserved after executing the Excel I/O.
*   Users can get and customize each page setting before saving to a PDF file.
*   Any sheet range can be rendered inside a PDF file.
*   Rows or columns can be kept together when saving to PDF.
*   Multiple workbooks can be saved to one PDF file.
*   Specific pages from spreadsheet can be exported to PDF.
*   Multiple spreadsheet pages can be saved into one PDF page.
*   IRange.AutoFit method to fit rows or columns is supported.
*   IRange.FormulaArrayR1C1 property to get or set array formula in R1C1 format is supported.
*   More import flags are supported while opening an Excel file.
*   OLE Objects will be preserved after Excel I/O.
*   Shrink to fit feature for wrapped text is supported while saving to a PDF file.

## Resolved Issues

The following issues have been resolved since the last release.

*   DsExcel .NET no longer ignores the 'ignore\_empty' parameter in TEXTJOIN formula.
*   Fixed the issue of large JSON file generation when using ToJson() method on a particular Workbook.
*   UsedRange.Value now sets proper values to the range when the Formula is set to Empty.