Data Grid Cells: Read Only State Management
Documentation
Methods
Below are methods designed to facilitate programmatic updates within your spreadsheets.
Method | Description |
---|---|
setReadOnly(object|string, boolean) | Change the read only state of a cell.setReadOnly(ident: HTMLElement|string, state: boolean) : void |
isReadOnly(number,number) | Check if a cell is read only.isReadOnly(x: number, y: number) : boolean |
Export Limitation
When exporting to XLSX using the render extension, note that readonly properties are not included in the export. To ensure compatibility with Excel, you should use the locked property instead. This allows you to lock the entire worksheet while keeping specific cells unlocked as needed.
Properties | Description |
---|---|
locked?: boolean | Controls the lock state of the spreadsheet. Defaults to null. |
selectUnLockedCells?: boolean | Enables selection of unlocked cells. Default: true. |
selectLockedCells?: boolean | Enables selection of locked cells. Default: true. |
Example
jspreadsheet(document.getElementById('spreadsheet'), {
tabs: true,
worksheets: [{
minDimensions: [10,10],
locked: true, // worksheet is locked
cells: {
// make A1 editable
A1: { locked: false }
}
}],
});
Examples
Programmatic Updates
The example demonstrates setting a spreadsheet column or an individual data grid cell to read-only status.
<script src="https://jspreadsheet.com/v11/jspreadsheet.js"></script>
<script src="https://jsuites.net/v5/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v11/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v5/jsuites.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<div id="spreadsheet"></div>
<p><input type="button" value="Disabled B2" id="btn1"></p>
<script>
let toggle = function(b) {
if (worksheets[0].isReadOnly('B2')) {
worksheets[0].setReadOnly('B2', false);
b.value = 'Disable B2';
} else {
worksheets[0].setReadOnly('B2', true);
b.value = 'Enable B2';
}
}
// Set your JSS license key (The following key only works for one day)
jspreadsheet.setLicense('N2ZjZjI0ZGM0Njc0Zjk0NzFlZmNjOTRjYjQwMzEyYzU1ZGI4NTFiNGE1MDljMzYxNWU5ZTZmNmUyOWE0YTg3NTZiZjU0OTFmOTNjZTM3ZjQ0NmI4YzVhYWJlYTMxYzgzODgxODBlODAzMDYxZTRiZDI5YzI4Y2M3NTE1ZTlkNTIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpNeU1qWTFOekV5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0ozWldJaUxDSnNiMk5oYkdodmMzUWlYU3dpY0d4aGJpSTZJak0wSWl3aWMyTnZjR1VpT2xzaWRqY2lMQ0oyT0NJc0luWTVJaXdpZGpFd0lpd2lkakV4SWl3aVkyaGhjblJ6SWl3aVptOXliWE1pTENKbWIzSnRkV3hoSWl3aWNHRnljMlZ5SWl3aWNtVnVaR1Z5SWl3aVkyOXRiV1Z1ZEhNaUxDSnBiWEJ2Y25SbGNpSXNJbUpoY2lJc0luWmhiR2xrWVhScGIyNXpJaXdpYzJWaGNtTm9JaXdpY0hKcGJuUWlMQ0p6YUdWbGRITWlMQ0pqYkdsbGJuUWlMQ0p6WlhKMlpYSWlMQ0p6YUdGd1pYTWlYU3dpWkdWdGJ5STZkSEoxWlgwPQ==');
// Create a new spreadsheet
let worksheets = jspreadsheet(document.getElementById('spreadsheet'), {
worksheets: [{
data: [
['Mazda', 2001, 2000, 1],
['Peugeot', 2010, 5000, 1],
['Honda Fit', 2009, 3000, 1],
['Honda CRV', 2010, 6000, 0],
],
columns: [
{ readonly: true }
],
cells: {
C1: { readonly: true }
}
}]
});
document.getElementById("btn1").onclick = (e) => toggle(e.target);
</script>
</html>
import React, { useRef } from "react";
import { Spreadsheet, Worksheet } from "@jspreadsheet/react";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set the license
const license = 'N2ZjZjI0ZGM0Njc0Zjk0NzFlZmNjOTRjYjQwMzEyYzU1ZGI4NTFiNGE1MDljMzYxNWU5ZTZmNmUyOWE0YTg3NTZiZjU0OTFmOTNjZTM3ZjQ0NmI4YzVhYWJlYTMxYzgzODgxODBlODAzMDYxZTRiZDI5YzI4Y2M3NTE1ZTlkNTIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpNeU1qWTFOekV5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0ozWldJaUxDSnNiMk5oYkdodmMzUWlYU3dpY0d4aGJpSTZJak0wSWl3aWMyTnZjR1VpT2xzaWRqY2lMQ0oyT0NJc0luWTVJaXdpZGpFd0lpd2lkakV4SWl3aVkyaGhjblJ6SWl3aVptOXliWE1pTENKbWIzSnRkV3hoSWl3aWNHRnljMlZ5SWl3aWNtVnVaR1Z5SWl3aVkyOXRiV1Z1ZEhNaUxDSnBiWEJ2Y25SbGNpSXNJbUpoY2lJc0luWmhiR2xrWVhScGIyNXpJaXdpYzJWaGNtTm9JaXdpY0hKcGJuUWlMQ0p6YUdWbGRITWlMQ0pqYkdsbGJuUWlMQ0p6WlhKMlpYSWlMQ0p6YUdGd1pYTWlYU3dpWkdWdGJ5STZkSEoxWlgwPQ==';
// Readonly state
const toggle = function(worksheet, button) {
if (worksheet.isReadOnly('B2')) {
worksheet.setReadOnly('B2', false);
button.value = 'Disable B2';
} else {
worksheet.setReadOnly('B2', true);
button.value = 'Enable B2';
}
}
// Create the component
export default function App() {
// Spreadsheet array of worksheets
const spreadsheet = useRef();
// Data
const data = [
['Mazda', 2001, 2000, 1],
['Peugeot', 2010, 5000, 1],
['Honda Fit', 2009, 3000, 1],
['Honda CRV', 2010, 6000, 0],
]
const columns = [
{ readonly: true }
]
const cells = {
C1: { readonly: true }
}
// Method
const toggle = function(worksheet, button) {
if (worksheet.isReadOnly('B2')) {
worksheet.setReadOnly('B2', false);
button.value = 'Disable B2';
} else {
worksheet.setReadOnly('B2', true);
button.value = 'Enable B2';
}
}
// Render data grid component
return (
<>
<Spreadsheet ref={spreadsheet} license={license} toolbar>
<Worksheet data={data} columns={columns} cells={cells} />
</Spreadsheet>
<input type={"button"} value={"Disabled B2"} onClick={() => toggle(spreadsheet.current[0], this)} />
</>
);
}
<template>
<Spreadsheet ref="spreadsheet" :license="license">
<Worksheet :data="data" :columns="columns" :cells="cells" />
</Spreadsheet>
<input ref="button" type="button" value="Disabled B2" @click="toggle" />
</template>
<script>
import { Spreadsheet, Worksheet } from "@jspreadsheet/vue";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set the license
const license = 'N2ZjZjI0ZGM0Njc0Zjk0NzFlZmNjOTRjYjQwMzEyYzU1ZGI4NTFiNGE1MDljMzYxNWU5ZTZmNmUyOWE0YTg3NTZiZjU0OTFmOTNjZTM3ZjQ0NmI4YzVhYWJlYTMxYzgzODgxODBlODAzMDYxZTRiZDI5YzI4Y2M3NTE1ZTlkNTIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpNeU1qWTFOekV5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0ozWldJaUxDSnNiMk5oYkdodmMzUWlYU3dpY0d4aGJpSTZJak0wSWl3aWMyTnZjR1VpT2xzaWRqY2lMQ0oyT0NJc0luWTVJaXdpZGpFd0lpd2lkakV4SWl3aVkyaGhjblJ6SWl3aVptOXliWE1pTENKbWIzSnRkV3hoSWl3aWNHRnljMlZ5SWl3aWNtVnVaR1Z5SWl3aVkyOXRiV1Z1ZEhNaUxDSnBiWEJ2Y25SbGNpSXNJbUpoY2lJc0luWmhiR2xrWVhScGIyNXpJaXdpYzJWaGNtTm9JaXdpY0hKcGJuUWlMQ0p6YUdWbGRITWlMQ0pqYkdsbGJuUWlMQ0p6WlhKMlpYSWlMQ0p6YUdGd1pYTWlYU3dpWkdWdGJ5STZkSEoxWlgwPQ==';
export default {
components: {
Spreadsheet,
Worksheet,
},
methods: {
toggle() {
let worksheet = this.refs.spreadsheet.current[0];
if (worksheet.isReadOnly('B2')) {
worksheet.setReadOnly('B2', false);
this.refs.button.value.value = 'Disable B2';
} else {
worksheet.setReadOnly('B2', true);
this.refs.button.value.value = 'Enable B2';
}
}
},
data() {
// Data
const data = [
['Mazda', 2001, 2000, 1],
['Peugeot', 2010, 5000, 1],
['Honda Fit', 2009, 3000, 1],
['Honda CRV', 2010, 6000, 0],
]
const columns = [
{ readonly: true }
]
const cells = {
C1: { readonly: true }
}
return {
data,
columns,
cells,
license,
};
}
}
</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('N2ZjZjI0ZGM0Njc0Zjk0NzFlZmNjOTRjYjQwMzEyYzU1ZGI4NTFiNGE1MDljMzYxNWU5ZTZmNmUyOWE0YTg3NTZiZjU0OTFmOTNjZTM3ZjQ0NmI4YzVhYWJlYTMxYzgzODgxODBlODAzMDYxZTRiZDI5YzI4Y2M3NTE1ZTlkNTIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpNeU1qWTFOekV5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0ozWldJaUxDSnNiMk5oYkdodmMzUWlYU3dpY0d4aGJpSTZJak0wSWl3aWMyTnZjR1VpT2xzaWRqY2lMQ0oyT0NJc0luWTVJaXdpZGpFd0lpd2lkakV4SWl3aVkyaGhjblJ6SWl3aVptOXliWE1pTENKbWIzSnRkV3hoSWl3aWNHRnljMlZ5SWl3aWNtVnVaR1Z5SWl3aVkyOXRiV1Z1ZEhNaUxDSnBiWEJ2Y25SbGNpSXNJbUpoY2lJc0luWmhiR2xrWVhScGIyNXpJaXdpYzJWaGNtTm9JaXdpY0hKcGJuUWlMQ0p6YUdWbGRITWlMQ0pqYkdsbGJuUWlMQ0p6WlhKMlpYSWlMQ0p6YUdGd1pYTWlYU3dpWkdWdGJ5STZkSEoxWlgwPQ==');
@Component({
standalone: true,
selector: "app-root",
template: `
<div #spreadsheet></div>
<input #button type='button' value='Disabled B2' (click)="this.toggle()" />`,
})
export class AppComponent {
@ViewChild("spreadsheet") spreadsheet: ElementRef;
@ViewChild("button") button: ElementRef;
// Worksheets
worksheets: jspreadsheet.worksheetInstance[];
// Data
data: data;
// Create a new data grid
ngAfterViewInit() {
// Create spreadsheet
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
worksheets: [{
data: [
['Mazda', 2001, 2000, 1],
['Peugeot', 2010, 5000, 1],
['Honda Fit', 2009, 3000, 1],
['Honda CRV', 2010, 6000, 0],
],
columns: [
{ readonly: true }
],
cells: {
C1: { readonly: true }
}
}]
});
}
toggle() {
if (this.worksheets[0].isReadOnly('B2')) {
this.worksheets[0].setReadOnly('B2', false);
this.button.value = 'Disable B2';
} else {
this.worksheets[0].setReadOnly('B2', true);
this.button.value = 'Enable B2';
}
}
}
Locked Worksheet
This example shows how to lock a worksheet while keeping specific cells unlocked. Locking a worksheet can prevent unwanted changes to your data while still allowing interaction with designated cells. This feature is useful for maintaining the integrity of critical data while providing flexibility for user inputs in certain areas.
<script src="https://jspreadsheet.com/v11/jspreadsheet.js"></script>
<script src="https://jsuites.net/v5/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v11/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v5/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('N2ZjZjI0ZGM0Njc0Zjk0NzFlZmNjOTRjYjQwMzEyYzU1ZGI4NTFiNGE1MDljMzYxNWU5ZTZmNmUyOWE0YTg3NTZiZjU0OTFmOTNjZTM3ZjQ0NmI4YzVhYWJlYTMxYzgzODgxODBlODAzMDYxZTRiZDI5YzI4Y2M3NTE1ZTlkNTIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpNeU1qWTFOekV5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0ozWldJaUxDSnNiMk5oYkdodmMzUWlYU3dpY0d4aGJpSTZJak0wSWl3aWMyTnZjR1VpT2xzaWRqY2lMQ0oyT0NJc0luWTVJaXdpZGpFd0lpd2lkakV4SWl3aVkyaGhjblJ6SWl3aVptOXliWE1pTENKbWIzSnRkV3hoSWl3aWNHRnljMlZ5SWl3aWNtVnVaR1Z5SWl3aVkyOXRiV1Z1ZEhNaUxDSnBiWEJ2Y25SbGNpSXNJbUpoY2lJc0luWmhiR2xrWVhScGIyNXpJaXdpYzJWaGNtTm9JaXdpY0hKcGJuUWlMQ0p6YUdWbGRITWlMQ0pqYkdsbGJuUWlMQ0p6WlhKMlpYSWlMQ0p6YUdGd1pYTWlYU3dpWkdWdGJ5STZkSEoxWlgwPQ==');
// Create a new spreadsheet
let worksheets = jspreadsheet(document.getElementById('spreadsheet'), {
worksheets: [{
data: [
['Mazda', 2001, 2000, 1],
['Peugeot', 2010, 5000, 1],
['Honda Fit', 2009, 3000, 1],
['Honda CRV', 2010, 6000, 0],
],
locked: true,
cells: { A1: { locked: false } }
}]
});
</script>
</html>
import React, { useRef } from "react";
import { Spreadsheet, Worksheet } from "@jspreadsheet/react";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set the license
const license = 'N2ZjZjI0ZGM0Njc0Zjk0NzFlZmNjOTRjYjQwMzEyYzU1ZGI4NTFiNGE1MDljMzYxNWU5ZTZmNmUyOWE0YTg3NTZiZjU0OTFmOTNjZTM3ZjQ0NmI4YzVhYWJlYTMxYzgzODgxODBlODAzMDYxZTRiZDI5YzI4Y2M3NTE1ZTlkNTIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpNeU1qWTFOekV5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0ozWldJaUxDSnNiMk5oYkdodmMzUWlYU3dpY0d4aGJpSTZJak0wSWl3aWMyTnZjR1VpT2xzaWRqY2lMQ0oyT0NJc0luWTVJaXdpZGpFd0lpd2lkakV4SWl3aVkyaGhjblJ6SWl3aVptOXliWE1pTENKbWIzSnRkV3hoSWl3aWNHRnljMlZ5SWl3aWNtVnVaR1Z5SWl3aVkyOXRiV1Z1ZEhNaUxDSnBiWEJ2Y25SbGNpSXNJbUpoY2lJc0luWmhiR2xrWVhScGIyNXpJaXdpYzJWaGNtTm9JaXdpY0hKcGJuUWlMQ0p6YUdWbGRITWlMQ0pqYkdsbGJuUWlMQ0p6WlhKMlpYSWlMQ0p6YUdGd1pYTWlYU3dpWkdWdGJ5STZkSEoxWlgwPQ==';
// Create the component
export default function App() {
// Spreadsheet array of worksheets
const spreadsheet = useRef();
// Data
const data = [
['Mazda', 2001, 2000, 1],
['Peugeot', 2010, 5000, 1],
['Honda Fit', 2009, 3000, 1],
['Honda CRV', 2010, 6000, 0],
]
const cells = { A1: { locked: false } }
// Render data grid component
return (
<>
<Spreadsheet ref={spreadsheet} license={license} toolbar>
<Worksheet data={data} cells={cells} locked={true} />
</Spreadsheet>
</>
);
}
<template>
<Spreadsheet ref="spreadsheet" :license="license">
<Worksheet :data="data" :cells="cells" :locked="true" />
</Spreadsheet>
</template>
<script>
import { Spreadsheet, Worksheet } from "@jspreadsheet/vue";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set the license
const license = 'N2ZjZjI0ZGM0Njc0Zjk0NzFlZmNjOTRjYjQwMzEyYzU1ZGI4NTFiNGE1MDljMzYxNWU5ZTZmNmUyOWE0YTg3NTZiZjU0OTFmOTNjZTM3ZjQ0NmI4YzVhYWJlYTMxYzgzODgxODBlODAzMDYxZTRiZDI5YzI4Y2M3NTE1ZTlkNTIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpNeU1qWTFOekV5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0ozWldJaUxDSnNiMk5oYkdodmMzUWlYU3dpY0d4aGJpSTZJak0wSWl3aWMyTnZjR1VpT2xzaWRqY2lMQ0oyT0NJc0luWTVJaXdpZGpFd0lpd2lkakV4SWl3aVkyaGhjblJ6SWl3aVptOXliWE1pTENKbWIzSnRkV3hoSWl3aWNHRnljMlZ5SWl3aWNtVnVaR1Z5SWl3aVkyOXRiV1Z1ZEhNaUxDSnBiWEJ2Y25SbGNpSXNJbUpoY2lJc0luWmhiR2xrWVhScGIyNXpJaXdpYzJWaGNtTm9JaXdpY0hKcGJuUWlMQ0p6YUdWbGRITWlMQ0pqYkdsbGJuUWlMQ0p6WlhKMlpYSWlMQ0p6YUdGd1pYTWlYU3dpWkdWdGJ5STZkSEoxWlgwPQ==';
export default {
components: {
Spreadsheet,
Worksheet,
},
data() {
// Data
const data = [
['Mazda', 2001, 2000, 1],
['Peugeot', 2010, 5000, 1],
['Honda Fit', 2009, 3000, 1],
['Honda CRV', 2010, 6000, 0],
]
const cells = { A1: { locked: false } }
return {
data,
cells,
license,
};
}
}
</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('N2ZjZjI0ZGM0Njc0Zjk0NzFlZmNjOTRjYjQwMzEyYzU1ZGI4NTFiNGE1MDljMzYxNWU5ZTZmNmUyOWE0YTg3NTZiZjU0OTFmOTNjZTM3ZjQ0NmI4YzVhYWJlYTMxYzgzODgxODBlODAzMDYxZTRiZDI5YzI4Y2M3NTE1ZTlkNTIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpNeU1qWTFOekV5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0ozWldJaUxDSnNiMk5oYkdodmMzUWlYU3dpY0d4aGJpSTZJak0wSWl3aWMyTnZjR1VpT2xzaWRqY2lMQ0oyT0NJc0luWTVJaXdpZGpFd0lpd2lkakV4SWl3aVkyaGhjblJ6SWl3aVptOXliWE1pTENKbWIzSnRkV3hoSWl3aWNHRnljMlZ5SWl3aWNtVnVaR1Z5SWl3aVkyOXRiV1Z1ZEhNaUxDSnBiWEJ2Y25SbGNpSXNJbUpoY2lJc0luWmhiR2xrWVhScGIyNXpJaXdpYzJWaGNtTm9JaXdpY0hKcGJuUWlMQ0p6YUdWbGRITWlMQ0pqYkdsbGJuUWlMQ0p6WlhKMlpYSWlMQ0p6YUdGd1pYTWlYU3dpWkdWdGJ5STZkSEoxWlgwPQ==');
@Component({
standalone: true,
selector: "app-root",
template: `
<div #spreadsheet></div>`,
})
export class AppComponent {
@ViewChild("spreadsheet") spreadsheet: ElementRef;
// Worksheets
worksheets: jspreadsheet.worksheetInstance[];
// Data
data: data;
// Create a new data grid
ngAfterViewInit() {
// Create spreadsheet
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
worksheets: [{
data: [
['Mazda', 2001, 2000, 1],
['Peugeot', 2010, 5000, 1],
['Honda Fit', 2009, 3000, 1],
['Honda CRV', 2010, 6000, 0],
],
locked: true,
cells: { A1: { locked: false } }
}]
});
}
}