SpreadJS was introduced in Spread Studio in April 2015 as SpreadJS v8. The prevrious version was part of the Wijmo product family. Below are the features that were added to SpreadJS in v8.

 Formula Enhancements



  • Volatile functions: Volatile functions such as RAND, RANDBETWEEN, NOW, TODAY update once the SpreadJS calculation engine recalculates.

  • SUBTOTAL function ignores hidden rows: The SUBTOTAL function behaves similar to Excel. When the function_num is 1 to 11, the evaluator includes the hidden values; when the function_num is 101 to 111, the evaluator ignores the hidden values.

  • INDIRECT function support: Returns the reference specified by a text string. References are immediately evaluated to display their contents. Use INDIRECT when you want to change the reference to a cell within a formula without changing the formula itself.

  • Async Functions Support: A new AsyncFunction class which is used to make an async custom function, it is possible to asynchronously calculate or load data during function evaluation and the result is shown in the cell asynchronously. For example, get data from the server side by using an ajax call in the function evaluation, the result is shown in the cell asynchronously without blocking UI operation.


Cell and Table-Level Binding Enhancements


Spread Designer reads the data schema and makes fields available in the UI. Those fields can then be dragged to cells for easy cell-level binding. Table level binding can also be performed by dragging an array type data field into the cell.

Cell binding in the SpreadJS Designer

Serialization Enhancements



  • Data Source Serialization:SpreadJS now provides an option that indicates whether to serialize bound cell values into JSON.

  • Custom type Serialization: SpreadJS has types that can be customized. These include CellType, Function, Formatter, SparklineEx, Tag, and RowFilter. Now these customized types can be serialized into JSON so that they are initialized automatically during deserialization.


Filter Enhancements


Added two override methods to the RowFilter class so you can have actions for filtering and un-filtering. It is also possible to hide the filter button for a specific column.

Customize Header Interaction


Provides ability to process mouse events for header celltype which allows you to customize mouse behaviors for row or column headers.

Interactive headers

More Enhancements



  • ExcelIO Service: Comments can now be imported from or exported to an Excel file. It is also possible to specify the download file name when exporting to an Excel file.

  • Tag property: Tag properties for cell, row, column and sheet object allow you to store any value with these objects.

  • FormulaTextBox: Wwhen editing a formula in the FormulaTextBox,it is possible to select a cell range in another sheet using the mouse.

  • Watermark: Shows gray watermark string for the cell when the value is empty.

  • Hide Selection: Seelection indicator can be hidden when the control does not have focus.

  • Process Tab: Supports entering or leaving the control using tab navigation and provides three new sets of actions for responding to tab navigation in a web page.

  • RangeChanged Event: Provides event arguments in RangeChanged event, such as drag drop, drag fill, clear, paste, or sort.

  • Designer UI Enhancements: The designer has been updated to mimic Excel 2013.