# Release Notes for Version 15.1.0

## Content

# Enhancements from the Previous Release

The following features and enhancements have been incorporated in this version of the product.

* SpreadJS TableSheet now supports [column captions for multiple headers](/spreadjs/docs/v17/features/tablesheet/tablesheet-views#column-caption-multiple-headers) to help display a common header for related columns along with the existing columns.
* [Add a header area](tablesheet-views#i-heading-free-header-area) to a tablesheet view where you can describe and display the information of the tablesheet.
* SpreadJS Designer has introduced a [TableSheet Design Mode](DesignMode) to add multiple column header captions and the free header area.
* Users can now create a [Tablesheet Cross Column](ts-crosscolumn) that helps to present fields from multiple related tables in a single row view.
* The tablesheet view [Stack Header Fit Mode](tablesheet-views#i-heading-column-header-fit-mode) has been enhanced to display alongside the vertical mode in a cross-fit way when the columns are adjacent to each other. A new API option has also been introduced to set the stack row height.
* The pivot table now supports [displaying items with no data](pivot-table-settings#i-heading-show-items-with-no-data), enabling it to show blank cells in a field.
* [Pivot Table Timeline Slicer](pt-slicer#i-heading-timeline-slicers) has been introduced to filter data quickly by date, month, year, and quarter.
* SpreadJS now supports creating a pivot table using the [tablesheet as a data source](create-pivot-table#i-heading-using-tablesheet-as-a-data-source).
* Users can choose whether to [automatically extend the filter range](filter-operations#i-heading-auto-extend-filter-range) beyond the original filter range.
* The PROPERTY formula function now supports a [dot operator “.”](property-function#i-heading-dot-operator) that can be used as a shorthand.
* The [Print Area](PrintArea) has been enhanced to create and maintain a custom name “Print\_Area” whenever the user defines a print range.
* SpreadJS now provides an [“All Sheets” Button](tabstrip#i-heading-the-all-sheets-button) in the tab strip that helps navigate to specific sheet(s) in a workbook more quickly.
* [Cross Workbook Formula](CrossWorkbookFormula) has been introduced to calculate values by referring to and using data from different workbooks.
* Users can now [hide a worksheet](work-with-worksheets#i-heading-hide-or-unhide-worksheet) in the Spread component from where it cannot be set to visible through the UI.
* A [shape’s properties](ShapePropertyLinks) can now be linked with worksheet cells by referencing them in a formula.
* SpreadJS now supports the ability to [get a cell range based on the type of data](cell-range#i-heading-get-range-by-type-of-data) available in the sheet.
* [Sparklines added with methods](createspark#i-heading-sparklines-with-non-continuous-ranges) now support using non-continuous data ranges, where random values from a worksheet can be used.
* New [CellRange](/spreadjs/api/v17/classes/GC.Spread.Sheets.CellRange) methods have been introduced to [set styles and named styles](/spreadjs/docs/v17/features/cells/styles) in cell ranges.
* The [Drag Drop operation](dragdrop) in SpreadJS has been enhanced to include new shift actions for inserting cells in the sheet and the table.
* Additional culture info can be used in the Spread worksheet using the [SpreadJS Globalization](globalization) JavaScript library.
* Users can now [customize the format culture dialog](designer-customize-culture) in SpreadJS Designer Component to define new culture options using the [CultureInfo](/spreadjs/api/v17/classes/GC.Spread.Common.CultureInfo) class.
* SpreadJS Designer Component now supports Vue 3. [Refer here](/spreadjs/docs/v17/spreadjs_designer_component/designer-javaScript-frameworks/designer-vue) to add the SpreadJS Designer Component in a Vue application.

# Resolved Issues

* Pivot table field forecolors are imported correctly by SpreadJS.
* SpreadJS retains the content area in mobile view.
* The trendline equation of the XY scatter chart now shows the correct font color imported by SpreadJS.
* The value of cells is retained when using the moveTo method.
* The filter box shows values correctly when inserting copied cells in a filter range.
* Hyperlink handles arrays correctly when importing Excel files.
* The custom name reference is unaffected when inserting a column in a table.
* SpreadJS Designer Component with React has resolved the issue where setting content security policy throws an error.
* The COUNTIF formula function gives the correct result when used with a custom culture.
* Comment class methods are implemented correctly when set while loading the SpreadJS object from JSON data.
* All the rows are retained when doing a re-filter after using the fromJSON method.
* The validator in the tablesheet works correctly when a new row is added.
* SpreadJS has been updated to have the same logic as in Excel when entering positive and negative percentage values.
* The changeFormulaReference command works correctly when the cursor is present at the beginning.
* The table header is displayed correctly in the column header with a frozen row upon scrolling.
* The SpreadJS Designer toolbar mode has been updated to adjust according to the container width.
* The performance of the Spread print preview has been improved.
* The ROWS formula works correctly after the row count has been changed.
* The chart style and data label value are retained when importing Excel files.
* The print preview displays the header area correctly when the header text is modified.
* Improved performance of Excel files consisting of many hidden cells in a sheet.
* Data binding is retained when SSJON export is performed.
* The word-wrap option in Format Cell Dialog has been updated to perform automatic line-height adjustments.
* The FILTER formula works correctly in imported Excel files.
* SpreadJS has been updated to perform table filter correctly when importing Excel files.
* Fixed an issue where the formulas are not calculated without enabling the doNotRecalculateAfterLoad property.
* Copy-pasting contents from one table to another sheet retains the table style.
* The IHitTestCellTypeHitInfo interface now includes a sheet attribute.
* Fixed an issue where Excel files are not imported due to rich text font appearance in Windows operating system.
* The tablesheet has been updated to retain references when the tablesheet data is cleared.
* The IFERROR formula function evaluates expressions correctly when the result is null.
* The IconSetRule conditional format is set correctly when selecting no cell icons.
* Pivot tables can be added now upon resetting the sheet.
* The cell style is retained when changing the watermark color.
* SpreadJS has been updated to export PDF files correctly when working with fitPagesWide and fitPagesTall methods.
* SpreadJS has been updated to correctly remove a comment triggered by an event.
* The sorting result of the pivot table has been fixed to have the same logic as in Excel.
* The tablesheet now returns an error when formula references consist of removed columns.
* If the region field is not set in the binding source, then the corresponding cell content will be null.
* Table binding is updated correctly when removing a column.
* Column naming of new and existing columns in a data-bound table has been enhanced.
* SpreadJS has been enhanced to address an Angular V13 compiler bug.
* The formula text box in SpreadJS Designer works correctly when invoking the unbindAll command.
* SpreadJS imports Excel files with pivot table correctly.
* Customized paper kinds can now be added to the print preview page and dialog.
* The date validator is now consistent in both Chrome and Safari browsers.
* The imported workbook’s formatter list in the setting dialog refers to the data format correctly.
* Group outlines expand and collapse properly now.
* Fixed an issue where inserting a calculated field adds duplicate text.
* SpreadJS performance has been enhanced when loading Excel files with a lot of formulas.
* SpreadJS Designer updates the name in the font dialog box correctly when selecting a newly added font.
* The source name and caption name of all the slicers attached to the table are retained when renaming the column of a table.