We’re excited to announce SpreadJS v19.2, a release focused on building more Excel-like, analysis-ready, and collaborative spreadsheet applications in JavaScript.
This release expands What-If Analysis with Scenario support, brings powerful KeyTip capabilities to the Designer Ribbon Component, connects PivotTables more directly to DataManager data, improves Collaboration Server for DataManager-based binding, and adds practical workbook, cell formatting, GanttSheet, ReportSheet, and framework updates.
Ready to dive into the details? Let's explore what's new in SpreadJS v19.2.
What’s New in SpreadJS v19.2
- Designer Enhancements
- Formulas
- Cells
- What-If Analysis
- Data
- Charts
- PivotTable
- Collaboration Server
- AI Assistant
- DataCharts
- ReportSheet
- GanttSheet
- UI and UX Enhancements
- Framework Support
- MCP Server
Download a the Latest SpreadJS Release Today!
Designer Enhancements
Ribbon KeyTips
SpreadJS Designer now supports Excel-like Ribbon KeyTips. Pressing Alt or F10 displays visible key labels for the File Menu and Ribbon tabs, allowing users to navigate tabs, open menus, and execute commands from the keyboard.

Developers can enable or disable KeyTips, customize activation keys, and define custom KeyTip values in Ribbon configuration. This improves keyboard accessibility and gives power users a faster Designer workflow.
Learn more in the Ribbon KeyTip documentation or try the Designer demo.
Rename Sheet from Context Menu
Designer now includes a Rename command in the sheet tab context menu. This complements the existing double-click rename workflow and makes sheet renaming easier to discover.

Read more in the TabStrip docs.
CJK Formatter and Localization Improvements
Designer adds support for Excel-like formatter escape semantics in CJK environments, improving compatibility with localized number-format input. Print page size and unit defaults can also respond to culture, such as using A4 for Japanese culture instead of always defaulting to Letter.
Learn more in the Designer Culture documentation.
Protection Option Type Definitions
Designer type definitions now include missing worksheet protection options, improving TypeScript support and making Designer configuration easier to use in strongly typed applications.
Formulas
Progress Sparkline
A new formula-driven progress sparkline makes it easier to show progress directly inside cells. Developers can use this compact visual for task completion, KPI status, goal tracking, and operational dashboards without building a separate chart object.

Learn more in the Progress Sparkline documentation or try the Progress Sparkline demo.
FILTERXML Function
SpreadJS v19.2 adds support for the FILTERXML function. This Excel-compatible function extracts data from XML text using an XPath expression, helping spreadsheet applications work with structured XML content directly in formulas.
For example, suppose cell A1 contains the following XML string:
<catalog>
<product id="1" category="electronics">Laptop</product>
<product id="2" category="electronics">Phone</product>
<product id="3" category="clothing">T-Shirt</product>
</catalog>
| Formula | Result | Description |
=FILTERXML(A1,"//product/@id") |
{1; 2; 3} | Returns all id attribute values. |
=FILTERXML(A1,"//product[@category='electronics']") |
{"Laptop"; "Phone"} | Returns products in the electronics category. |
=FILTERXML(A1,"//product[@id='2']") |
Phone | Returns the product with id="2". |
This closes another formula compatibility gap for applications that import Excel workbooks or use formulas to parse XML-based data payloads.
Read more in our FILTERXML function docs or try the FILTERXML demo.
East Asian Full-Width Formula Input
Formula entry now better supports East Asian full-width syntax. In Japanese and Chinese Excel environments, users often type full-width parentheses or related formula characters through localized input methods. SpreadJS v19.2 improves this input experience by supporting Excel-like conversion and handling for those localized formula entry patterns.
Learn more in the East Asian Full-Width Formula Input documentation.
Cells
Excel-Like Focus Cell
SpreadJS v19.2 adds Focus Cell, a workbook-level visual aid that highlights the active cell's row and column with configurable color and opacity. This makes it easier for end users to stay oriented in large worksheets, especially when working with wide financial models, complex reports, or dense operational grids.

Focus Cell behaves like a UI navigation layer rather than a stored cell style. It does not modify worksheet data, is not exported to Excel, and does not appear in printed or PDF output. It also works with selections, merged cells, hidden rows and columns, and Designer workflows.
Developers can enable it with workbook options, while Designer users can toggle it from the View tab.
Read more in the Focus Cell docs or try the Focus Cell demo.
Better Fill Series for CJK and Numeric Text
Fill Series now better supports strings ending in numeric values, including full-width digits used in CJK input. This improves the familiar Excel-like drag-fill workflow for localized data entry scenarios, such as generating item labels, document IDs, or region-specific codes.
Learn more in the Custom Format Culture documentation or try the Drag Fill demo.
Rounded Cell Borders
SpreadJS v19.2 adds rounded border support for worksheet cells, spans, ranges, and headers. This is especially useful for report-style layouts, grouped form sections, payroll-style documents, dashboards, and other business forms that need rounded rectangular sections directly in the grid.

Rounded borders are part of cell style state through borderRadius, and ranges can apply rounded corners uniformly or only to the visible outer corners. The implementation works with existing border priority rules, supported line styles, hidden rows and columns, JSON/SJS persistence, and PDF export.
Designer support makes the feature discoverable without requiring code, while the API gives developers precise control over individual cells and ranges.
Learn more in the Rounded Border docs or try the Border Radius demo.
What-If Analysis
Scenario Analysis
SpreadJS v19.2 expands What-If Analysis with Scenario support. Scenarios let users save named sets of input values, apply them to a workbook, recalculate dependent formulas, and compare business outcomes quickly.

Unlike Excel's worksheet-scoped model, SpreadJS scenarios are workbook-scoped, making them more flexible for modern spreadsheet applications and future shared-view workflows. Scenarios can span multiple worksheets, track base values for restore operations, update stored references when rows or columns are inserted, deleted, moved, or sorted, and participate in workbook serialization.
Developers can use the Scenario Manager API to get, set, apply, restore, remove, and activate scenarios. Active Scenario mode captures subsequent cell edits into a scenario, making scenario creation easier for end users.
Learn more in the Scenario Manager documentation or try the Scenario Manager demo.
Scenario Panel and Designer Support
Designer adds scenario management UI so users can view, apply, and manage scenarios through a familiar interface. This makes What-If Analysis more accessible for business users who need to compare plans, forecasts, budgets, or alternative assumptions without writing code.
Data
Worksheet, Cell, and Table Binding to DataManager
SpreadJS v19.2 strengthens the connection between worksheet binding and DataManager. Worksheet-level binding, cell binding, table binding paths, and table binding can now work with DataManager-backed data, giving developers a more unified data model for complex spreadsheet applications.
This reduces duplicated data plumbing and makes it easier to build applications where business data is centrally managed by DataManager while still presented and edited through spreadsheet UI.
Learn more in the Data Binding documentation or try the Bind to DataManager demo.
TableSheet Sort and Filter API
TableSheet now provides APIs for sort and filter operations that were previously available primarily through UI interaction. Developers can programmatically apply filter and sort options, clear previous state, and build more controlled TableSheet workflows.
These APIs make TableSheet easier to integrate into custom dashboards, workflow tools, and server-driven application logic.
Read me in the TableSheet Sort and Filter docs.
Charts
Data Label Font Styling for Charts
Chart data labels now support richer font styling. Users can configure label font name, size, color, bold, italic, underline, strikethrough, and related formatting through Designer or the Chart API, helping charts match Excel output and application design requirements more closely.

Learn more in the Chart Data Label documentation or try the Chart Data Labels demo.
Chart Axis Title Text Direction
SpreadJS v19.2 improves Excel chart compatibility by supporting axis title text direction. Imported Excel charts with vertical or rotated axis title text can now render more faithfully in SpreadJS, and Designer adds controls for configuring text direction.

Read more in the Chart Axis Configuration docs or try the Chart Axis demo.
Plot Area Customization
Charts now support plot area customization, including fill, border, and layout settings. This gives developers and Designer users more control over chart presentation and helps match the formatting available in Excel workbooks.
Learn more in the Chart Plot Area documentation or try the Chart Plot Area demo.
Custom Print Lines in Worksheet
Page break and print preview workflows are now easier to tailor. SpreadJS v19.2 adds support for customizing print line appearance through CSS, so developers can adjust page break line color and width to better match their application UI or reporting workflow.
Read me in the Custom Print Line docs or try the Custom Print demo.
Print PaperSize and Unit Based on Culture like Excel
Print page size and unit defaults now respond to culture, such as using A4 for Japanese culture instead of always defaulting to Letter.
Learn more in the Paper Size documentation.
PivotTable
PivotTables from DataManager Tables and Views
PivotTables can now use DataManager Tables and Views directly as data sources. This removes the need to first materialize DataManager data into a worksheet or TableSheet before analyzing it with PivotTable.

A PivotTable can consume a single DataManager Table or a DataManager View, including relation-based view results. DataManager remains the owner of fetching, relations, and data changes, while PivotTable consumes the resulting table-like data to build and refresh PivotCache.
Developers can control automatic refresh behavior with autoRefresh, explicitly refresh sources with updateSource(), and choose whether JSON/SJS save output includes materialized external-source PivotCache data.
Learn more in the PivotTable Creation docs or try the PivotTable from Data Manager demo.
Custom Subtotals
SpreadJS v19.2 adds support for custom subtotals in PivotTable row and column fields. This improves Excel parity and gives users finer control over subtotal behavior when building analytical pivot reports.
Learn more in the PivotTable Dimension Subtotal documentation or try the PivotTable Custom Subtotals demo.
Collaboration Server
Collaboration Supports DataManager-Based Binding
DataManager-based binding also gains collaboration support. Multiple users can work with bound worksheets, cells, and tables while keeping binding configuration and related states consistent across the collaboration session.
The latest V19 SP2 specs cover collaboration for worksheet binding and table binding with DataManager, including additional behavior for table binding backed by remote DataManager data. For local DataManager data, collaboration supports viewing, editing, and bound-area operations. For remote data, SpreadJS synchronizes binding configuration and table state while leaving remote data consistency under the control of the application's backend and refresh flow.
Learn more in the Collaboration Server Data Manager Binding docs or try the Collaboration Server demo.
AI Assistant
SJS.AI.QUERY Multi-Parameter Support
The SJS.AI.QUERY function now supports multiple prompt and data parameters. This makes it easier to build richer AI-assisted spreadsheet formulas that combine several prompt fragments and data ranges into one AI request.
Example query with multiple prompts and data ranges:
=SJS.AI.QUERY("Clean this messy data", B4:B14, "Extract the values based on the column labels", C3:F3)
Learn more in the AI Query docs or try the AI functions demo.
DataCharts
DataCharts Date Axis
DataCharts now support richer date-axis behavior for BI and analytics scenarios. Date fields can be used as raw dates or grouped into derived date buckets such as year, quarter, month, or day. Axis rendering can use continuous date scales or ordinal category scales, giving developers control over both data grouping and visual presentation.

This makes DataCharts better suited for time-series analysis, financial dashboards, sales trend reporting, and other date-driven visualizations.
Read more in the DataChart Date Axis documentation or try the DataChart Date Mode Binding demo.
DataCharts Trellis Binding
SpreadJS v19.2 adds Trellis Binding, also known as small multiples, to DataCharts. A single dataset can now be split into repeated chart panels based on row and column categorical fields, making it easier to compare values across dimensions such as region, product category, department, year, or quarter.

Trellis Binding works across a broad range of chart types and supports row binding, column binding, multi-level grouping, shared or per-cell axes, empty cell handling, and styling options for trellis headers and grid lines.
Learn more in the DataChart Trellis Binding docs or try the DataChart Trellis demo.
Positive and Negative Colors for DataCharts
DataCharts can now use separate positive and negative colors for column, bar, and area-style visualizations. This makes variance, profit/loss, cash flow, and other above-or-below-baseline values easier to read at a glance.

Read more in the DataChart Color Encoding documentation or try the DataChart Color Editing demo.
DataCharts Line Aspect
Line, area, range area, stacked area, percent stacked area, radar, and filled radar DataCharts gain expanded line-aspect options. Developers can choose default, spline, step, and Bezier-style rendering where supported, allowing charts to better match the intended analytical style and Excel-like output.
Learn more in DataChart Radar Line Aspect docs or try the DataChart Line Chart demo.
Additional DataCharts Enhancements
This release also adds custom layout behavior for plot area and legends when space is constrained, separated color and detail encodings for clearer chart configuration, and broader configuration coverage across DataCharts chart types.
ReportSheet
Report Generation Events and Temporary Text
ReportSheet now provides events around report generation and supports displaying temporary text while reports are being created. These improvements help developers provide clearer loading feedback in applications where report generation may take time.
Read more in the ReportSheet Report Generation Events documentation or try the ReportSheet Events demo.
Worksheet and ReportSheet Watermark
Watermark enhancements also apply to ReportSheet scenarios, giving developers more control over document state labels and report presentation.

Learn more in the ReportSheet Watermark docs or try the ReportSheet Watermark demo.
GanttSheet
Progress Line Support in GanttSheet
GanttSheet adds Progress Line support, helping project managers and application users visualize project status against a selected status date. The feature includes status-date display, progress points for eligible tasks, and a connecting progress line across the chart area.
This makes GanttSheet more useful for project tracking, schedule review, and status reporting workflows.
Learn more in the GanttSheet Progress Line documentation or try the GanttSheet Progress Line demo.
UI and UX Enhancements
|
Enhancement |
Description | Preview |
| Excel-like filter button placement | Improved filter behavior with a more Excel-like policy for placing filter buttons at the first row of the selected range. This reduces confusion for users who expect the selected range's first row to act as the header row. | ![]() |
| Reapply filtering in the Designer | Designer adds support for Excel-like Reapply filtering, allowing users to reapply existing filter and sort conditions after the underlying data changes. This includes sheet filters, table filters, and filter-menu sort states such as color sort. | ![]() |
| Support commitInput command | Added a built-in command that commits cell editor input without navigating focus, supporting custom keyboard workflows where Enter should save input only. |
|
| Touch Selection Indicator Customization | Provided customization points for touch selection indicators so mobile/touch scenarios can better match product UX requirements. | ![]() |
Framework Support
Angular 22 Support
SpreadJS is now fully tested and confirmed compatible with Angular 22, so developers can confidently upgrade their Angular apps without changing any SpreadJS integration code.
Get started with our Angular guide.
New SpreadJS MCP Server Available!
Want to put all of these new features to use with ease? Make sure to plug in our SpreadJS MCP Server to your AI coding agent! Give your agent expert guidance and knowledge from our official MCP Server to build faster, better SpreadJS applications.
Get started with our MCP Server documentation.
Download a the Latest SpreadJS Release Today!
We encourage you to explore these new features and incorporate them into your projects. As always, you can find more details in our documentation and see these capabilities in action in our online demos. This release continues our commitment to making SpreadJS the most comprehensive and high-performance JavaScript spreadsheet solution available.
Happy coding, and we look forward to seeing what you build with SpreadJS v19.2!
Chris Bannon, Product Manager, SpreadJS


