SpreadJS is optimized for fast performance. Launch the Performance Benchmark demo to load random values and set various properties. For example, populate 2 million cells in less than a second.
Take full control over the design of your spreadsheets with the SpreadJS Designer: create workbooks from scratch or import your own Excel .xlsx files to edit in an Excel-like WYSIWYG interface.
SpreadJS includes full support for Pivot Tables, including the import and export of Excel pivot tables. This optional deployment add-on is a powerful data analysis tool used to group, calculate, summarize, and present large amounts of data.
TableSheet is a separate high-performance enterprise-grade DataTable that adds the power of the SpreadJS spreadsheet calculation engine, runtime panels, and customized views to handle your most demanding data binding needs fast.
The SpreadJS Data Manager is a new data engine API built for performance that makes connecting and interacting with TableSheet's bound data faster and easier than ever before with data relationships and views.
Use conditional formatting to automatically highlight important information or easily spot trends in your data using the values you specify. SpreadJS supports the importing and exporting of many of Excels' rules.
SpreadJS includes a comprehensive Calculation Engine that supports 500+ built-in functions, custom functions, array functions, dynamic arrays, formula textbox, localized languages function names, most Excel functions, and more.
Return multiple results from a singular formula like FILTER, RANDARRAY, SEQUENCE, SORT, SORTBY, and UNIQUE. Use the implicit intersection operator within formulas to get single values from a dynamic array formula.
Tables make it easier to manage and analyze related spreadsheet data. SpreadJS supports AutoExpand, conditional formatting, data validation, context menus, fixed headers, table resize and navigation, a total summary row and more.
Use the built-in Excel-like filter dialog to allow your users to automatically filter their data or take advantage of creating custom filters to show and hide the relevant data as per your applications needs.
Similar to filters, Excel-like slicers offer an intuitive visual way to filter your spreadsheet data. Available slicers include table, item, chart, aggregation, and custom slicers such as those used on consumer websites.
SpreadJS includes support for many of the Excel shapes and provides more advanced functionality using data-driven shapes to dynamically generate the shape to create interactive shapes such as a manufacturing plant floor.
The Range cell type allows custom rendering of cell data based on a cell range template. Data is bound to the template and rendered into the cell. Create custom rendering, such as card view, multi-row, and custom KPI blocks all without extra code.
SpreadJS supports extensive formatting at the cell level. Format any cell properties, including the cell type, font, font size, border, colors, alignment, word wrap, indentation, cell padding and labels, orientation, validation, tags, comments, and more.
Data validation allows you to define restrictions on what data can or cannot be entered within a cell. You can also provide visual indicators on the invalid data to help the user correct the data to fit restrictions of a database.
Quickly and easily select data using the cell drop-down features. Create input forms, advanced structured forms, and other interactive forms using drop-downs such as lists, date pickers, sliders, calculators, and color pickers.
Define custom cell styles to provide visual clues when the cell state has changed such as edit mode, hover, invalid, active, selected, read only, or changed. Create interactive input form controls, advanced structured forms and other interactive forms.
SpreadJS supports eleven popular barcode sparklines including QR code, EAN-13, EAN-8, Codabar, Code39, Code93, Code128, GS1_128, Code49, PDF417, and DataMatrix that can be applied to any cell using formulas.
SpreadJS supports Excel-like hyperlinks, allowing users to quickly open up links from inside worksheet cells. Navigate to sheet locations, open up URLs, a draft email, or create custom commands that work like buttons in the sheet.
SpreadJS can sort data in ascending or descending order and you can specify a column or row index to sort on as well as the sort criteria. Custom complex sorting can also be defined with compare functions
SpreadJS supports AutoMerge for any cell range, column and the row and column headers. The neighboring cells in both the rows and columns can be visually merged automatically if the text is the same.
SpreadJS makes it easy for your users to enter data by using AutoFill to automatically fill similar data or increment the values in adjacent values. Use custom fill to load the data at runtime programmatically.
SpreadJS includes an Excel-like context pop up menu for interacting with the sheet when the mouse is right-clicked on the control. Easily customize the context menu by adding and removing custom menu options.
Print a single worksheet, specific data, or multiple worksheets with headers, borders, gridlines and other options. Set page breaks, display preview lines, get page information and print a background image as a watermark.
SpreadJS supports exporting to a PDF file. You can also import your Excel .xlsx files and export it to PDF. The Export operation uses the printInfo object for page setting and provides support for all the printing features that are available in SpreadJS.
SpreadJS makes it easy to find any data in the spreadsheet using the advanced built-in search function. You can also specify options such as the case, exact match, wild cards, cell range to search, and the order.
Add custom floating objects like pictures, logos, or custom HTML content that display on the top of the cells in a sheet. Customize objects using the included properties to control interaction.
SpreadJS includes built-in support for English, Chinese, and Japanese, and create custom resource files for other languages. The SpreadJS calculation engine also includes 18+ language packages and custom function localization.