Documentation keyboard_arrow_right Tables
Worksheet Tables
Jspreadsheet v12 introduces worksheet tables with advanced filtering capabilities, enabling you to define named regions with headers and filters. Full compatibility with other spreadsheet software allows users to create calculations using specific syntax to reference these structured data regions.
Documentation
Methods
Methods available for programmatic table interaction:
Method |
Description |
getTable(name) |
Retrieve table configuration by name |
setTable(config) |
Create or update a table with the specified configuration |
resetTable(name) |
Remove table formatting and filters from the named table |
Settings
Property |
Description |
tables: Table[] |
Define structured table ranges within the worksheet |
Table[]
Property |
Description |
type?: 'table' |
Table type identifier |
name?: string |
Unique table identifier |
range?: string |
Cell range definition (e.g., 'A1:D10') |
theme?: string |
Visual theme for table styling |
headerRow?: boolean |
Treat the first row as column headers |
totalRow?: boolean |
Enable total row at the bottom of the table |
bandedRows?: boolean |
Apply alternating row background colors |
bandedColumns?: boolean |
Alternate column colors |
firstColumn?: boolean |
Apply bold formatting to first column |
lastColumn?: boolean |
Apply bold formatting to last column |
filters?: boolean |
Enable dropdown filters in header row |
Examples
<html>
<script src="https://jspreadsheet.com/v12/jspreadsheet.js"></script>
<script src="https://jsuites.net/v6/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v12/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v6/jsuites.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<div id="spreadsheet"></div>
<script>
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('ODEzMGY1ODg1MGEyNTkwZmM1OWI5ZTEzMDQzMGFhM2ZmOTZjOTU5ZjU4Y2Q1Mzg3NGMyNTI2Njk5M2U5OGI4ZmQ0NjVmYzZhOGUzNTRmMmQ3ZjhkODY0ZThiOGE3MTYzNGU0ZDE3NmQxMDBjYWQ5YzMyN2M2NzZkZWZhZTZiODAsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azJNREV3TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
// Create the spreadsheet
let spreadsheet = jspreadsheet(document.getElementById('spreadsheet'), {
tableOverflow: true,
tableWidth: 700,
worksheets: [{
minDimensions: [10,10],
tables: [{
name: 'TABLE1',
range: 'B2:E7',
bandedRows: true,
filters: true,
}]
}]
});
</script>
</html>
import React, { useRef } from "react";
import { Spreadsheet, Worksheet } from "@jspreadsheet/react";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('ODEzMGY1ODg1MGEyNTkwZmM1OWI5ZTEzMDQzMGFhM2ZmOTZjOTU5ZjU4Y2Q1Mzg3NGMyNTI2Njk5M2U5OGI4ZmQ0NjVmYzZhOGUzNTRmMmQ3ZjhkODY0ZThiOGE3MTYzNGU0ZDE3NmQxMDBjYWQ5YzMyN2M2NzZkZWZhZTZiODAsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azJNREV3TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default function App() {
const spreadsheet = useRef();
// Table configuration
const tables = [{
name: 'TABLE1',
range: 'B2:E7',
bandedRows: true,
filters: true,
}];
// Render react component
return (
<Spreadsheet ref={spreadsheet} tableOverflow={true} tableWidth={700}>
<Worksheet minDimensions={[10,10]} tables={tables} />
</Spreadsheet>
);
}
<template>
<Spreadsheet ref="spreadsheet" :tableOverflow="true" :tableWidth="700">
<Worksheet :minDimensions="[10,10]" :tables="tables" />
</Spreadsheet>
</template>
<script>
import { Spreadsheet, Worksheet } from "@jspreadsheet/vue";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('ODEzMGY1ODg1MGEyNTkwZmM1OWI5ZTEzMDQzMGFhM2ZmOTZjOTU5ZjU4Y2Q1Mzg3NGMyNTI2Njk5M2U5OGI4ZmQ0NjVmYzZhOGUzNTRmMmQ3ZjhkODY0ZThiOGE3MTYzNGU0ZDE3NmQxMDBjYWQ5YzMyN2M2NzZkZWZhZTZiODAsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azJNREV3TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
export default {
components: {
Spreadsheet,
Worksheet,
},
data() {
// Table configuration
const tables = [{
name: 'TABLE1',
range: 'B2:E7',
bandedRows: true,
filters: true,
}];
return {
tables,
};
}
}
</script>
import { Component, ViewChild, ElementRef } from "@angular/core";
import jspreadsheet from "jspreadsheet";
import "jspreadsheet/dist/jspreadsheet.css"
import "jsuites/dist/jsuites.css"
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('ODEzMGY1ODg1MGEyNTkwZmM1OWI5ZTEzMDQzMGFhM2ZmOTZjOTU5ZjU4Y2Q1Mzg3NGMyNTI2Njk5M2U5OGI4ZmQ0NjVmYzZhOGUzNTRmMmQ3ZjhkODY0ZThiOGE3MTYzNGU0ZDE3NmQxMDBjYWQ5YzMyN2M2NzZkZWZhZTZiODAsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpVNU56azJNREV3TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2lkMlZpSWl3aWJHOWpZV3hvYjNOMElsMHNJbkJzWVc0aU9pSXpOQ0lzSW5OamIzQmxJanBiSW5ZM0lpd2lkamdpTENKMk9TSXNJbll4TUNJc0luWXhNU0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owWlhJaUxDSmlZWElpTENKMllXeHBaR0YwYVc5dWN5SXNJbk5sWVhKamFDSXNJbkJ5YVc1MElpd2ljMmhsWlhSeklpd2lZMnhwWlc1MElpd2ljMlZ5ZG1WeUlpd2ljMmhoY0dWeklpd2labTl5YldGMElsMHNJbVJsYlc4aU9uUnlkV1Y5');
@Component({
standalone: true,
selector: "app-root",
template: `<div #spreadsheet></div>`,
})
export class AppComponent {
@ViewChild("spreadsheet") spreadsheet: ElementRef;
// Worksheets
worksheets: jspreadsheet.worksheetInstance[];
// Create a new data grid
ngAfterViewInit() {
// Create spreadsheet
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
tableOverflow: true,
tableWidth: 700,
worksheets: [{
minDimensions: [10,10],
tables: [{
name: 'TABLE1',
range: 'B2:E7',
bandedRows: true,
filters: true,
}]
}]
});
}
}