SpreadJS v15 is Released!

We’re excited to announce that the new SpreadJS v15 release is now available for download! We’ve added many new and customer requested features that we think will help accelerate your spreadsheet development and user acceptance. Read on to learn more.

TableSheet and Data Manager

Two of the most significant features we have added to SpreadJS v15 are the TableSheet and Data Manager. The SpreadJS TableSheet is a new type of sheet component that is an extremely powerful data table that can also take full advantage of the existing 500+ function SpreadJS calculation engine. This quick, data-bound table view includes a relational data manager that makes sorting, filtering, and many other data management functions incredibly fast.

For more information about these new features, check out the dedicated TableSheet and Data Manager blog here <LINK TO TABLESHEET AND DATA MANAGER BLOG>

PivotTable Enhancements

Slicer

You can filter PivotTables with a single click using the new slicer feature. With a familiar interface, you can filter an aggregate target by connecting multiple PivotTables and managing the filter state of row and column fields.

GETPIVOTDATA Spill Support

The GETPIVOTDATA function, which returns the visible data from a PivotTable, now supports spilling, which means the results can now populate multiple cells. It should be noted that the allowDynamicArray property has to be set to true for this to work.

Calculated Items

PivotTables now support calculated items, which can be added into the row or column field areas using constants or references to other fields in the PivotTable. Calculated items use formulas to calculate new values that don't exist in the original data, for example, calculating the total number of outstanding orders in an office supply PivotTable.

pivotTable.addCalcItem("OrderStatus", "Outstanding Orders","=OrderStatus[Canceled] + OrderStatus[Backorder] + OrderStatus[Pending]");
pivotTable.addCalcItem("OrderStatus", "Total Order", "=OrderStatus['Outstanding Orders'] + OrderStatus[Shipped]");
pivotTable.addCalcItem("OrderStatus", "Order Proportion", "=OrderStatus['Outstanding Orders']/OrderStatus['Total Order']");

Date-to-Date Filter

Data Type filters are already supported in PivotTables, but with the v15 release, we have added some built-in date-to-date filters, including:

  • Quarter-to-Date: The period starting at the beginning of the current quarter and ending on the current date
  • Month-to-Date: The period starting at the beginning of the current calendar month and ending on the current date
  • Year-to-Date: The period starting at the beginning of the current year and ending on the current date

ShowHeaders

Headers can now be hidden or displayed in PivotTables for the names of the fields in row or column directions. By default, the showHeadersproperty is true.

ToJSON Ignore Style

In some cases, you may want to import just the visible data for a PivotTable, where the new ignoreStyle parameter of the toJSON and fromJSON methods comes in. When this is true, the pivot cache and PivotTable will drop while importing just the values.

Custom Format Field Settings

When right-clicking on a PivotTable, you can change settings for the value fields. There is now a new dialog to format the values of those fields.

Filter Dialog Searching

The SpreadJS PivotTable now supports a search box in the filter dialog, so applying filters is more convenient.

Workbook Enhancements

Context Menu Scrolling

Sometimes the SpreadJS instance on a page is not big enough to show the context menu. To keep providing access to the context menu, we have added scrolling capabilities to it, with up and down indicators to scroll up and down.

Center Across Selection

Centering cells is even easier with v15. You can now select a range of cells and center the text to align it in the center of the entire selection.

InvalidOperation Event for DragFill

The InvalidOperation event is now fired when any invalid operation is made that involves drag filling, such as trying to drag fill on a merged range.

Color Index Format for Cell Formatting

Cell formatting now supports color index formatting in the form of color indexes ranging from 1 to 56. For example, setting this formatter would show the following colors in the sheet:

activeSheet.getRange(2,2,1,6).formatter("[color44][<300]0.0;[color3][>400]0.0;[color45]0.0")
activeSheet.getCell(2,2).value(100);
activeSheet.getCell(2,3).value(200);
activeSheet.getCell(2,4).value(300);
activeSheet.getCell(2,5).value(400);
activeSheet.getCell(2,6).value(500);
activeSheet.getCell(2,7).value(600);

 

Named Style Apply Flags

Apply flags have been added to named styles to handle the effect of different properties in the named styles, including:

  • Number Format
  • Font
  • Fill
  • Border
  • Alignment
  • Protection

Header/Footer Options for Different Pages

Headers and footers that are printed at the top or bottom of workbooks and worksheets can be customized, including specifying when to apply them:

  • Normal: Applies header or footer on all pages
  • First: Applied header or footer on the first page only
  • Odd and Even: Applies header or footer on odd pages or even pages only

Enhanced Outline Date Display in Filter Box

When there are dates within filters, they are laid out in an enhanced outline, allowing easier filtering by date:

Formula Entry With "+"

To match with Excel, SpreadJS v15 now supports using "+" or "-" in addition to "=" to begin entering a formula in a cell.

Row and Column States

SpreadJS now supports row and column states, which can help implement conditional formatting. These states include:

  • Edit
  • Hover
  • Active
  • Selected
  • Updated
  • Inserted
  • Dirty
  • Invalid

In any of these states, you can apply a specific conditional formatting rule via addRowStateRule or addColumnStateRule that only applies when conditions are satisfied within those states in the rows and columns, such as highlighting an entire row red if a value is below a certain amount.

New Calculation Engine Functions

LAMBDA

SpreadJS v15 now supports the Excel LAMBDA function, which gives you the ability to create and name custom reusable functions that can be called just like any other function. A custom function defined with LAMBDA uses the standard Excel formula language. These custom functions aren't limited to SpreadJS's custom function feature so that these custom functions can be saved within Excel files and exported without issues.

ASC

The new ASC function converts full-width or double-byte characters to half-width or single-byte characters. Essentially a full-width letter symbol, letter, or katakana can be converted to half-width characters using the ASC function:

ASC("デパート") returns デパート.

DBCS

The new DBCS function is the opposite of the ASC function and converts half-width or single-byte characters to full-width or double-byte characters. Just like the ASC function, this one supports text as either a number, date, string, or boolean:

DBCS("SpreadJS") returns SpreadJS.

JIS

The JIS function is exactly like the DBCS function, but is used exclusively for characters in Japanese and German and converts half-width characters to full-width:

JIS("デパト") returns デパト.

Designer Enhancements

We have also added many enhancements to the Designer, giving your users an even better experience using the optional Designer Add-on.

Printing

The Designer now supports printing with a page setup dialog. This dialog includes tabs for Page, Margins, Header/Footer, and Sheet, allowing you to control the various, familiar options for printing SpreadJS workbooks.

Text to Columns

You can now convert delimiter-separated text in a cell to text across multiple columns, essentially splitting the text by the delimiter. This new feature in the SpreadJS Designer includes a wizard window to help with converting the text.

Remove Duplicates

The new Remove Duplicates option can be used to more quickly and automatically remove redundant data. This new functionality will keep only the first occurrence of a value in a selected cell range and delete the other identical values.

Change Sheet Tab Position

The position of the sheet tab strip in the SpreadJS Designer can now be changed with a simple context menu item.

Name Manager Dialog Filter

In some cases, a workbook might have a lot of different custom names defined in it, so we have added a new filter within the Name Manager dialog to help with searching.

Ctrl + F Support

The Find and Replace dialog and functionality already exist in the SpreadJS Designer, but with v15, we have added the ability to open this dialog up using "Ctrl+F quickly".

Chart Enhancements

Data Point Style Customization

Data points in a chart had a predefined set of colors automatically chosen when the chart was created. With v15, these colors and styles can now be customized individually using the IDataPointStyle interface.

Angular 13 Support

Angular 13 is now supported in SpreadJS v15 in addition to Vue and React.

Tags:

comments powered by Disqus