Get Set Data

SpreadJS provides methods to handle data in worksheet cells.

You can get or set a value for a specified cell. To get a series of values or set values to a range of cells, you can use code similar to the following: You can also get or set text to a specified cell. This is similar to getting or setting a value to a cell. If you want to delete data, you can use the following method to clear the data from the specified range. SpreadJS also supports copying or moving a series of data from one range to another range. You can use the sheet.options.showZeros option to control whether display the zero values in the cell. When false, cells with zero value appear blank instead of showing the number zero.
import * as React from 'react'; import { createRoot } from 'react-dom/client'; import './styles.css'; import { AppFunc } from './app-func'; import { App } from './app-class'; // 1. Functional Component sample createRoot(document.getElementById('app')).render(<AppFunc />); // 2. Class Component sample // createRoot(document.getElementById('app')).render(<App />);
import * as React from 'react'; import { SpreadSheets, Worksheet } from '@mescius/spread-sheets-react'; import GC from '@mescius/spread-sheets'; import './styles.css'; const spreadNS = GC.Spread.Sheets; let spread = null; export function AppFunc() { const initSpread = (currSpread) => { spread = currSpread; spread.suspendPaint(); let sheet = spread.getSheet(0); sheet.setValue(1, 1, 'setValue'); sheet.setValue(1, 2, 2014); sheet.setText(3, 1, 'setText'); sheet.setText(3, 2, '01/01/2014'); sheet.setText(5, 1, '0 Value'); sheet.setValue(5, 2, 0); sheet.setColumnWidth(2, 90); sheet.setColumnWidth(8, 120); sheet.setColumnWidth(9, 120); sheet.setValue(0, 7, 'setArray'); sheet.setArray(1, 7, [ ['ID', 'Phone Number', 'Address'], [1, '021-432378', 'Marbury Road'], [2, '021-432668', 'Chester Road'], [3, '021-432238', 'Gertt Road'], [4, '021-432533', 'Jnyliner Road'], [5, '021-432125', 'Approach Road'], [6, '021-432789', 'Jones Road'] ]); initStyle(sheet); spread.resumePaint(); } const copyTo = () => { const sheet = spread.getActiveSheet(); sheet.copyTo(1, 7, 10, 7, 7, 3, spreadNS.CopyToOptions.all); } const moveTo = () => { const sheet = spread.getActiveSheet(); sheet.moveTo(0, 7, 9, 7, 8, 3, spreadNS.CopyToOptions.all); } const initStyle = (sheet) => { let style = new GC.Spread.Sheets.Style(); style.backColor = '#c6c0ca'; for (let row = 1; row < 6; row++) { for (let col = 1; col < 3; col++) { sheet.setStyle(row, col, style); } } style = new GC.Spread.Sheets.Style(); style.backColor = '#bbd2cc'; for (let row = 1; row < 8; row++) { for (let col = 7; col < 10; col++) { sheet.setStyle(row, col, style); } } style = new GC.Spread.Sheets.Style(); style.backColor = '#fcd8dd'; for (let row = 10; row < 17; row++) { for (let col = 7; col < 10; col++) { sheet.setStyle(row, col, style); } } } const updateShowZeros = (e) => { spread.getActiveSheet().options.showZeros = e.target.checked; } return ( <div class="sample-tutorial"> <div class="sample-spreadsheets"> <SpreadSheets workbookInitialized={spread => initSpread(spread)}> <Worksheet> </Worksheet> </SpreadSheets> </div> <Panel copyTo={() => { copyTo() }} moveTo={() => { moveTo() }} updateShowZeros={(e) => { updateShowZeros(e) }} ></Panel> </div> ); } function Panel(props) { return ( <div class="options-container"> <p>Users can set the data for the worksheet or get the data from the worksheet.</p> <p>Clicking the "Copy" button will copy the data from H2:J8 to H11:J17.</p> <p>Clicking the "Move" button will move the data from H1:J8 to H10:J17.</p> <input type="button" value="Copy" id="btnCopy" onClick={props.copyTo} /> <input type="button" value="Move" id="btnMove" onClick={props.moveTo} /> <hr /> <input type="checkbox" class="usedRange" id="showZeros" onChange={props.updateShowZeros} defaultChecked={true} /> <label for="showZeros" class="usedRange">Show Zero Value Cells</label> </div> ); }
import * as React from 'react'; import { SpreadSheets, Worksheet } from '@mescius/spread-sheets-react'; import GC from '@mescius/spread-sheets'; import './styles.css'; const Component = React.Component, spreadNS = GC.Spread.Sheets; export class App extends Component { constructor(props) { super(props); this.spread = null; } render() { return ( <div class="sample-tutorial"> <div class="sample-spreadsheets"> <SpreadSheets workbookInitialized={spread => this.initSpread(spread)}> <Worksheet> </Worksheet> </SpreadSheets> </div> <Panel copyTo={() => { this.copyTo() }} moveTo={() => { this.moveTo() }} updateShowZeros={(e) => { this.updateShowZeros(e) }} ></Panel> </div> ); } initSpread(spread) { this.spread = spread; spread.suspendPaint(); let sheet = spread.getSheet(0); sheet.setValue(1, 1, 'setValue'); sheet.setValue(1, 2, 2014); sheet.setText(3, 1, 'setText'); sheet.setText(3, 2, '01/01/2014'); sheet.setText(5, 1, '0 Value'); sheet.setValue(5, 2, 0); sheet.setColumnWidth(2, 90); sheet.setColumnWidth(8, 120); sheet.setColumnWidth(9, 120); sheet.setValue(0, 7, 'setArray'); sheet.setArray(1, 7, [ ['ID', 'Phone Number', 'Address'], [1, '021-432378', 'Marbury Road'], [2, '021-432668', 'Chester Road'], [3, '021-432238', 'Gertt Road'], [4, '021-432533', 'Jnyliner Road'], [5, '021-432125', 'Approach Road'], [6, '021-432789', 'Jones Road'] ]); this.initStyle(sheet); spread.resumePaint(); } copyTo() { let spread = this.spread, sheet = spread.getActiveSheet(); sheet.copyTo(1, 7, 10, 7, 7, 3, spreadNS.CopyToOptions.all); } moveTo() { let spread = this.spread, sheet = spread.getActiveSheet(); sheet.moveTo(0, 7, 9, 7, 8, 3, spreadNS.CopyToOptions.all); } initStyle(sheet) { let style = new GC.Spread.Sheets.Style(); style.backColor = '#c6c0ca'; for (let row = 1; row < 6; row++) { for (let col = 1; col < 3; col++) { sheet.setStyle(row, col, style); } } style = new GC.Spread.Sheets.Style(); style.backColor = '#bbd2cc'; for (let row = 1; row < 8; row++) { for (let col = 7; col < 10; col++) { sheet.setStyle(row, col, style); } } style = new GC.Spread.Sheets.Style(); style.backColor = '#fcd8dd'; for (let row = 10; row < 17; row++) { for (let col = 7; col < 10; col++) { sheet.setStyle(row, col, style); } } } updateShowZeros(e) { this.spread.getActiveSheet().options.showZeros = e.target.checked; } } function Panel(props) { return ( <div class="options-container"> <p>Users can set the data for the worksheet or get the data from the worksheet.</p> <p>Clicking the "Copy" button will copy the data from H2:J8 to H11:J17.</p> <p>Clicking the "Move" button will move the data from H1:J8 to H10:J17.</p> <input type="button" value="Copy" id="btnCopy" onClick={props.copyTo} /> <input type="button" value="Move" id="btnMove" onClick={props.moveTo} /> <hr /> <input type="checkbox" class="usedRange" id="showZeros" onChange={props.updateShowZeros} defaultChecked={true} /> <label for="showZeros" class="usedRange">Show Zero Value Cells</label> </div> ); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/react/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/spread/source/data/data.js" type="text/javascript"></script> <!-- SystemJS --> <script src="$DEMOROOT$/en/react/node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> System.import('$DEMOROOT$/en/lib/react/license.js').then(function () { System.import('./src/app'); }); </script> </head> <body> <div id="app"></div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } .sample-spreadsheets { width: calc(100% - 280px); height: 100%; overflow: hidden; float: left; } .options-container { float: right; width: 280px; padding: 12px; height: 100%; box-sizing: border-box; background: #fbfbfb; overflow: auto; } .option-row { font-size: 14px; padding: 5px; margin-top: 10px; } label { display: block; margin-bottom: 6px; margin-top: 6px; } input { padding: 4px 6px; } input[type=button] { margin-top: 6px; display: inline-block; width: 85px; } .usedRange { display: inline-block; } #btnCopy { margin-right: 40px; } #data-used-range { margin-left: 75px; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #app { height: 100%; }
(function (global) { System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true, react: true }, meta: { '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-react': 'npm:@mescius/spread-sheets-react/index.js', '@grapecity/jsob-test-dependency-package/react-components': 'npm:@grapecity/jsob-test-dependency-package/react-components/index.js', 'react': 'npm:react/cjs/react.production.js', 'react-dom': 'npm:react-dom/cjs/react-dom.production.js', 'react-dom/client': 'npm:react-dom/cjs/react-dom-client.production.js', 'scheduler': 'npm:scheduler/cjs/scheduler.production.js', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'jsx' }, "node_modules": { defaultExtension: 'js' }, } }); })(this);