[{"id":"29a4ab0f-edd1-45e1-87df-0b8b4bb068b3","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"64b61a79-5817-4746-b591-28d4d5462c0a","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"6edef660-641f-4cd8-84f6-571130f37ae2","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"89a3ee5c-06c4-49c4-ac61-8325ba4bcca1","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"1e898427-e706-440e-9077-b35c7a5b8f46","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"4266ec12-a87a-444b-a8af-beff39a7defe","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"fd867fe6-72e0-4e45-bbac-edc72e608b08","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"fad338cd-7c96-48b9-a12d-1b979ba886b2","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"6fb42249-b832-4656-9137-35d9948bea1c","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"6e353a93-c1d4-4387-bad5-4a07fd18ed3a","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"acbe820e-65b4-4bd6-bcf3-a9d5b16163da","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"167a076a-6a93-49f6-8bf8-adee9abd9817","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"7fb1e240-d39d-4391-986f-c2d40adfb011","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"09cc5e9f-99c9-4258-b69c-ca5bb09a6b16","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"0b4ea8fb-4e7b-4028-9393-d1177a68ec17","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"35b8ea08-9ca6-49eb-a021-0c806de4ff96","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"7bace066-1638-4034-82eb-0db8c15f5bd1","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"7ec5ea8e-419f-40aa-b67d-301fa3e7b025","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"38f78942-4ca0-4631-a2d8-32dcfd6157a6","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"fc1d5e2a-5d1c-4479-ac87-c726c03d49aa","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"dd70702b-48a7-4896-b92d-db78ff9e52b0","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"cda2a866-9746-4790-9942-13c450ece8a1","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"3239f53b-81be-4d67-ae63-7ca0d6ce0f91","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"74c2daa1-efb0-4d3e-bd0c-8d11b297c92d","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"a4268f67-693d-4933-9e22-a77d68880a13","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"9f17896b-55b4-4627-8b6d-b01fdabdffe7","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"e45c5458-c148-4de7-a471-e2e3808d841e","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"ac44f25f-d7e5-46a3-a247-33e23e20e956","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"feb10296-b21e-4506-8d7e-567ed4dda994","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"ebba2e23-2c8d-4948-8cca-91ce71b3183d","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"ebdc80a9-26fc-4420-af7f-e576e4f12820","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"2cb68b65-34df-4322-911c-ead14627af13","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"0f2df6ef-74f6-42d5-a6ff-fb830bac6bc1","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"1feb74f5-775b-4809-80bb-1757ff6070f9","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"d8afaaaf-0174-4a14-8ba1-59043a985e91","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"7fd72fd2-933b-4816-81d1-b9e9d86b7c2c","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"9cf8d438-a37d-4dea-b0dd-e15d187e19ed","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"01561aea-2cd9-4883-a29a-1a7b9df2e432","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"ec2f2f29-d5a6-4fa0-aa61-353d48af9d1b","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"efb477ff-7d55-4163-a55e-a3c64415f6a4","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"c2302058-2cde-443c-a67f-e77cfd399c2e","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"a61a4e1a-eaea-4814-a424-e3c1ca6e3818","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"cb0d722f-fb48-45b5-a612-ff2df9b2e56e","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"50d0749d-1dde-4d8d-8963-e605f3a89b7a","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"900c820c-2909-4065-be81-72d3ca7733de","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"fac7dd69-11b1-42ee-8c1e-a41c97f4c3ee","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"9a357d48-c648-4ddb-8c79-2dc97bea6bc9","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"d5de4b91-714d-4c4c-8619-4b88fae85046","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"3741b662-b556-4859-8720-4c79fd48d48a","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"72db3e84-44c5-4d07-86b1-5f866a897e83","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"2a701ccf-5692-4ff9-9e44-62d6ec379397","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"d2087e5d-f90d-4827-a383-ff828bd65c69","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"bbf41a2c-98d3-4b54-82fb-a51c8441957e","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"477eb38f-0505-42fc-85ee-7456d81833e8","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"d9f37084-fcee-49d5-a192-8c41ee5615ed","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"067eb4be-9082-4153-8754-3bd0106a16ef","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"e943752e-d665-4133-ab1e-b6089d61b68a","tags":[{"product":null,"links":null,"id":"c3c0ef13-c7a9-4649-9fcb-23b3abec175d","name":"New","color":"Red","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]},{"id":"d573ae98-998d-4070-b089-620789e0738b","tags":[{"product":null,"links":null,"id":"2f377cfe-f512-431a-895b-f89af32041ce","name":"Upd","color":"Blue","productId":"c15646e4-63d8-4965-8d62-7549a2986e99"}]}]
In SpreadJS, the data range feature lets you define and manage specific worksheet areas within the sheet’s axis system. It is particularly useful for displaying and interacting with complex data structures. It transforms the range cells' coordinate row
and col
between the sheet axis and the data range axis, providing the transformation for the user to focus on the business logic instead of manual coordinate handling.
The data range abstracts the storage and style storage from the internal worksheet to a user-defined interface. This allows the user to render their specialized data structured directly into the worksheet with all the normal worksheet rendering and interactions. For example, the pivot table is a special data store that is designed for data analysis, and it uses the data range to render its data and styles into the worksheet. This allows users to design custom solutions similar to pivot tables, such as Analytical reports, Financial reports, and Virtual server data views. By retrieving and aggregating data efficiently and rendering it using data range, users can avoid manually writing data to worksheet cells, which improves performance and usability.
Note: Data ranges should not intersect and must have unique names.
Data Management: Defines logical boundaries within large datasets for targeted operations like visualization or analysis.
Customizable Data Display: Supports styling, merging, and conditional formatting for enhanced readability.
Dynamic Data Interaction: Real-time updates via event-driven hooks, sticky rows, and JSON serialization.
Improved User Experience: Features like sticky headers, alternating row styles, and keyboard navigation optimize usability.
Data Range IO: Export Data Ranges to JSON or Excel formats, maintaining consistent data representation.
Following the steps below, you can use a data range in the worksheet:
Create a custom data provider by implementing the IDataProvider
interface.
Select a target range in the worksheet.
Add the data range to the worksheet using the Data Range Manager.
A data provider is a user-defined instance. You can use the GC.Spread.Sheets.DataRange.IDataProvider
interface for setting values, getting values, undo changes, and also customizing cell values using the data provider.
The reading and writing of cell values in the data range are controlled by the data provider and you can use this ability to connect your data source conveniently. Use the getValue
method to fetch the values when the sheet is rendering the cells in the data range. Similarly, the setValue
method lets you assign values to cells within the data range.
Here is a sample of the customer data provider to take values with the data source.
class CustomerDataProvider {
// Values
dataSource = [
["ID", "Name", "Age"],
["1", "Mike", "18"],
["2", "Joe", "19"],
["3", "Nick", "30"],
["4", "Sam", "26"]
]
getValue(row, col) {
return this.dataSource[row][col];
}
setValue(row, col, value) {
this.dataSource[row][col] = value;
return true;
}
}
However, if you want to undo/redo the changes done then you need to record the change in the changes
parameter and then implement the undo
method in your data provider using changes
parameter.
class CustomerDataProvider {
// Values
dataSource = [
["ID", "Name", "Age"],
["1", "Mike", "18"],
["2", "Joe", "19"],
["3", "Nick", "30"],
["4", "Sam", "26"]
]
getValue(row, col) {
return this.dataSource[row][col];
}
setValue(row, col, value, changes) {
var oldValue = this.getValue(row, col);
if (changes) {
// create a change object with necessary informations for recovering state when undo
var change = {
row: row,
col: col,
oldValue: oldValue,
type: "value" // mark the change with some key, then convenient for you to identify when undoing
};
changes.push(change);
}
this.dataSource[row][col] = value;
return true;
}
undo(change) {
if (change.type === "value") { // marked in setValue method
var row = change.row;
var col = change.col;
var oldValue = change.oldValue;
this.setValue(row, col, oldValue);
}
}
}
Using the getStyle
method, you can customize the appearance of data ranges, such as table headers and body styles, alternating row styles, and so on. You can also use the GC.Spread.Sheet.Style
class to use public style properties in the data provider, such as formatter
, if required.
class CustomerDataProvider {
// Styles
headerRowCount = 1;
styles = {
header: () => {
var style = new GC.Spread.Sheets.Style();
style.backColor = "#217346";
style.foreColor = "white";
return style;
},
body: () => {
var style = new GC.Spread.Sheets.Style();
style.foreColor = "#217346";
style.backColor = "lightgray";
return style;
}
}
step = 2;
alternatingRowStyle = () => {
var style = new GC.Spread.Sheets.Style();
style.backColor = "#EEEEEE";
return style;
}
getStyle(row, col) {
// when row index is at the row header area
if (row < this.headerRowCount) {
return this.styles.header();
}
// Alternating Row Styles
if (row % this.step === 0) {
return this.alternatingRowStyle();
} else {
return this.styles.body();
}
}
}
You can also apply conditional formatting to a column of a data range using the applyColumnIndex
property to enhance the readability and interpretability of data.
class CustomerDataProvider {
// Conditional Formatting
headerRowCount = 2;
applyColumnIndex = 2; // the applied conditional format column index
condition = (value) => value > 18;
highlightStyle = () => {
var style = new GC.Spread.Sheets.Style();
style.foreColor = "red";
style.cellPadding = "10 0 0 0";
style.watermark = "ADULT";
style.labelOptions = { visibility: 0, foreColor: "#CCCCCC", font: '10px Arial' };
style.vAlign = GC.Spread.Sheets.VerticalAlign.center;
return style;
}
normalStyle = () => {
var style = new GC.Spread.Sheets.Style();
style.vAlign = GC.Spread.Sheets.VerticalAlign.center;
return style;
}
getStyle(row, col) {
if (row < this.headerRowCount) {
var style = new GC.Spread.Sheets.Style();
style.backColor = "#217346";
style.foreColor = "white";
return style;
}
if (row >= this.headerRowCount) {
// if match the condition
if (col === this.applyColumnIndex && this.condition(this.getValue(row, col))) {
return this.highlightStyle();
}
return this.normalStyle();
}
}
}
You can create multi-row or multi-column headers by using the getSpans
method in your data provider.
class CustomerDataProvider{
headerRowCount = 2;
// Spans
spans = [new GC.Spread.Sheets.Range(0, 0, 2, 1), new GC.Spread.Sheets.Range(0, 1, 1, 2)]
getSpans(row, col, rowCount, colCount) {
const spans = [];
for (let span of this.spans) {
if (span.intersect(row, col, rowCount, colCount)) {
spans.push(span);
}
}
return spans;
}
}
The table below displays different hook actions and their return parameters. You can implement them in your data provider as per your requirements.
Hooks | Input Params | Return |
---|---|---|
| row: number; rowCount: number; changeType: "add" | "delete"; changes: any[]; | |
| col: number; colCount: number; changeType: "add" | "delete"; changes: any[]; | |
| name: string; | { name: string, dataProvider: GC.Spread.Sheet.DataRange.IDataProvider | boolean; } If the value is false, it prevents copying the data range. By default, is false. |
| row: number; col: number; rowCount: number; colCount: number; changes: any[]; | If the value is false, it prevents clear the data range. By default, is false. This hook will be executed when clear content. |
| This hook will be executed when the data range is removing. | |
| row: number; col: number; e: MouseEvent; |
|
| deltaX: number; deltaY: number; e: MouseEvent; |
|
| row: number; col: number; e: KeyboardEvent; |
|
| { typeName: string; [prop: string]: any; } Ensure that the | |
| { typeName: string; [prop: string]: any; } |
The sheet.dataRanges
property help manage multiple data ranges within a worksheet. You can perform the tasks mentioned in the sections below.
To add a new data range, with a name, data provider instance, and range, use the add
method of dataRanges
class.
sheet.dataRanges.add(
"DataRangeName",
CustomDataProvider,
new GC.Spread.Sheets.Range(2, 2, 4, 4)
);
To remove a data range by its data range name, use the remove
method of dataRanges
class.
sheet.dataRanges.remove("DataRangeName");
To clear all the data ranges in the sheet, use the clear
method of the dataRanges
class.
sheet.dataRanges.clear();
To get a data range by its data range name, use the get
method of the dataRanges
class which takes the name of the data range as its parameter.
var dataRange = sheet.dataRanges.get("DataRangeName");
To get all the data ranges in the sheet, use the all
method of the dataRanges
class.
var dataRanges = sheet.dataRanges.all();
After your data source is changed, you can repaint and change the data range size and position, as per your requirements.
To repaint the data range area itself, use the repaint
method.
dataRange.repaint();
To change the size of data range, you can pass the new rowCount
and colCount
in range method
var oldRange = dataRange.range();
dataRange.range(oldRange.row, oldRange.col, oldRange.rowCount + 1, oldRange.colCount + 1);
To change the position of the data range, you can pass the new row and colindex
in the range method.
var oldRange = dataRange.range();
dataRange.range(oldRange.row + 1, oldRange.col + 1, oldRange.rowCount, oldRange.colCount);
You can make the data range top rows stick as the first visible row in the sheet, and the sticky rows count can be defined using sticky
property and it can be changed later. Use the IDataRangeOptions
interface to configure additional options like sticky rows.
sheet.dataRanges.add("DataRangeName", CustomDataProvider, new GC.Spread.Sheets.Range(2, 2, 4, 4), {
sticky: { top: 2 }
});
SpreadJS allows exporting data ranges to JSON, SJS, and Excel formats, ensuring a consistent presentation of the data. Following are the basic considerations for exporting data ranges.
JSON Format
Custom data provider classes cannot be serialized directly. Therefore, you must define a typeName
with a string value that matches the same class name in the data provider. Ensure that your data provider class is accessible in the global instance, like window
, so that the corresponding custom data provider class can be located during deserialization.
class CustomDataProvider {
constructor () {
this.typeName = "CustomDataProvider";
}
}
window.CustomDataProvider = CustomDataProvider;
SJS Format
While exporting data ranges to SpreadJS format for use in SpreadJS applications, all exported JSON data will be stored in a lossless
format.
Excel Format
Since Excel does not support data ranges, these ranges are exported as standard cells, including their values and styles.
Here are some important policies to keep in mind when working with data ranges in SpreadJS.
Row and column index must be between 0 and the total number of rows and columns in the sheet.
There are no limits on the number of rows and columns, but any data range areas outside the worksheet will be ignored.
All input parameters for the data provider hooks are based on the data range axes, not the sheet axes (e.g., row and column).
The data range will be moved when rows or columns are inserted or deleted before it and no action will be taken on the data range when rows or columns are inserted or deleted outside of the data range.
When the clear range contains the full data range, the data range will be removed.
The sort options in the Filter dialog and context menu will be hidden when the current context is a data range.
If there is no toJSON
hook implemented in the data provider, a default JSON data output will be generated using the custom data provider's typeName
property.
When using the fromJSON
, if there is no matching data provider, the corresponding data range will not be created.