# Release Notes for Version 14.1.0

## Content

# Enhancements from the Previous Release

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

- Users can now set the [position of axis data labels](ConfiguringAxes#i-heading-set-axis-label-position) in charts.
- [Arrange shapes using alignment, distribution, and snap options](/spreadjs/docs/v16/features/UnderstandingShapes/arrange-shapes) - Users can align multiple shapes, distribute them, and snap them to other shapes or grids.
- [TrailingRow without having blank space after data rows](/spreadjs/docs/v16/features/rows-columns/frozen) - Users can specify whether to have frozen trailing rows or columns or both in a sheet.
- [Set a limit on the number of undo and redo operations](/spreadjs/docs/v16/features/worksheet/undo) - Users can get the undo and redo stack as well as set a limit on number of undo and redo operations.
- [Change tab strip position and width](/spreadjs/docs/v16/features/workbook/tabstrip) - Users can set the position of tab strip relative to the workbook and change the width of tab strip.
- [Paste or skip data in invisible range](/spreadjs/docs/v16/features/rows-columns/paste-skip-data-invisible-range) - Users can now control whether to paste the data in an invisible range or not.
- [Support to import Excel file with customizable date format](/spreadjs/docs/v16/excelimpexp/excelimport/LocalebasedDateFormatImported) - Users can now customize the date format based on system locale settings while importing an Excel file.
- SpreadJS supports [WEBSERVICE](/spreadjs/docs/v16/formulareference/FormulaFunctions/web-functions/webservice) function which helps in fetching data from a web service on the Internet or Intranet.
- SpreadJS supports [FILTERJSON](/spreadjs/docs/v16/formulareference/FormulaFunctions/web-functions/filterjson) function which helps in parsing data from a JSON string.
- [IMAGE sparkline](/spreadjs/docs/v16/features/sparkmain/image-sparkline) - Users can now place an image in a cell using IMAGE sparkline function.
- SpreadJS now supports enhancing [Check Box list](/spreadjs/docs/v16/features/cells/celltypes/check-box-list-cell), [Radio Button list](/spreadjs/docs/v16/features/cells/celltypes/radio-button-list-cell)
, and [Check Box](/spreadjs/docs/v16/features/cells/celltypes/cellcheckbox) cell width size.
- Users can [set the orientation of chart axis](ConfiguringAxes#i-heading-set-axis-orientation).
- Users can now [change the hover backColor of cell button](/spreadjs/docs/v16/features/cells/cell-buttons) when it is visible or enabled.
- Users can create [histogram sparkline](/spreadjs/docs/v16/features/sparkmain/histogram-sparkline) to represent the frequency distribution of a dataset.
- Users can create [gauge KPI sparkline](/spreadjs/docs/v16/features/sparkmain/gauge-kpi-sparkline) to visualize the performance of metrics with respect to KPI values.
- Users can now add [Pivot Tables](/spreadjs/docs/v16/features/pivot-table) and perform various pivot related operations in SpreadJS.
- Users can now use [fill effects](/spreadjs/docs/v16/features/UnderstandingShapes/fill-effects) such as solid fill, gradient fill, picture fill, and texture fill in shapes.
- [Hyperlinks on Shapes](/spreadjs/docs/v16/features/UnderstandingShapes/hyperlinks-on-shapes) - Users can add hyperlinks on shapes, connector shapes, or group shapes.
- [Camera Shape](/spreadjs/docs/v16/features/UnderstandingShapes/camerashape) - Users can add dynamic images of a referenced area in a spreadsheet.
- Users can add and [edit text in shapes](/spreadjs/docs/v16/features/UnderstandingShapes/text-on-shapes).
- Users can now add [different types of compound lines](/spreadjs/docs/v16/features/UnderstandingShapes/formattingshapes) in shapes to customize their appearance.

# Resolved Issues

The following issues have been resolved since the last release.

- Cell editing works properly when cell contains formula.
- Picture size is retained after Excel file import.
- @ Operator does not apply extra parenthesis automatically.
- Alt Code Symbols are correctly exported to PDF.
- The contents of a cell are correctly displayed in imported Excel file.
- Characters are shown properly after registering font files and exporting the workbook as pdf.
- "Invalid range" error message is no longer thrown while adding chart based of non-contiguous ranges for the Category Axis.
- Custom date format is correctly applied to imported Excel files.
- The cell aspect ratio is retained when printing using fitPagesWide or fitPagesTall options.
- The value calculated by formula is retained when calcOnDemand is set to true and cell value is updated.
- Designer lib template & table icon position is fixed.
- Exporting shapes to PDF retains their position when the zoom factor is not 100%.
- Optimized CalcEngine performance.
- Formula result in SpreadJS is same as Excel.
- The name box displays correctly after initializing two designers.
- Formula recalculates after being modified.
- Shape's Gradient fill settings, "Radial" and "Linear", can be exported to PDF.
- The fields coincide with active blue box when designing a template.
- Hover action of Button Cells is retained after setting a background color.
- Pivot Table collapse operation does not cause group headers to disappear.
- SpreadJS updates all dependent cells.
- The sheet is updated after deleting any data.
- Setting the style name through API works correctly.
- Setting styles using the Designer component works correctly.
- The CellChanged event is called only once when changing the cell from Dialog.
- The style of exported Excel file is retained.
- After importing an Excel file, the formula displays correct information.
- Formula result is same as Excel after deleting rows.
- AT_AsyncFunction Function works correctly.
- Padding is scaled with zoom-in or zoom-out operations.
- Date formatting is based on locale settings on importing an Excel file.
- Other styles are retained after increasing the font size in cell.
- Fixed different Formula results using SpreadJS and Excel.
- Consistent results after exporting PDF.
- Percentage format symbol is displayed correctly in edit mode if clicked in the gray area after edit mode.
- Improved unhiding row performance.
- Font style is applied when adding style from Cell Style dropdown.
- DateTime Object is a new value in CellChanged event argument.
- Designer's copy button works correctly when used on images.
- Excel file is exported correctly after setting the conditional format.
- Label Margin works properly in Designer.
- Exporting ssjson from v14.0.8, importing it in v14.0.10 successfully exports Excel.
- In Pivot table Number Type Field, show details works correctly.
- Hyperlink in column headers works properly.
- Setting rich text by contextMenu with different font color, and change font color in formatCell dialog, the cell font foreColor also changes.
- When change the rich text color in richText and formatCell dialog, after changing the current theme, the rich text font color also changes according to the theme.
- Setting rich text and use named style in ribbon  (Style -> Cell styles), the cell foreColor and font also change according to the named cell style.
- ComboBox does not display value when text is empty and EditorValueType is value.
- Clicking a spreadsheet moves scroll position in intended behavior when using in iframe and Firefox.
- The font is retained after printing.
- Top border is applied to areas that share a border with merged cell.
- An event is bound to workbook properly.
- The formula is calculated correctly after importing in Excel.
- IsNA function works properly if the refer cell's result is "#NA".
- The backColor of the cell is consistent after importing to Excel.
- Demo scrollbars work properly when dragging and clicking out of the instance.
- Table theme style is retained after auto fitting row using header.
- No exception console message is thrown after exporting an Excel file.
- The hidden sheet is not displayed when checking incrementalLoading during Excel file import.


# Breaking Changes from the Previous Release

The following breaking change has been introduced prior the last release of the product.

- The name argument of [LET function](/spreadjs/docs/v16/formulareference/FormulaFunctions/math-trig-functions/LET) should not contain a '.'. All the pre-existing Excel and ssjson files using LET function and containing '.' in the variable names will be silently upgraded to valid variable names. SpreadJS will convert the '.' to '_', to match the updated Excel behavior.
