Use the following steps to reference Spread and work with the sheets.
Similar to other libraries, Sheet requires the following included files:
gc.spread.sheets.x.x.x.css
gc.spread.sheets.all.x.x.x.min.js
Create a sheet using the following code (the parameter is the sheet's name).
Add it at the specified position of an existing Spread component.
If you want to remove an existing sheet from the Spread component, use the following code. This example code removes the first sheet in the Spread.
If you want to remove all the sheets in the Spread component, use the convenient clearSheets method.
If you want to customize the sheet's name, use the name methods to get and set the sheet's name.
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import './styles.css';
import { AppFunc } from './app-func';
import { App } from './app-class';
// 1. Functional Component sample
ReactDOM.render(<AppFunc />, document.getElementById('app'));
// 2. Class Component sample
// ReactDOM.render(<App />, document.getElementById('app'));
import * as React from 'react';
import { SpreadSheets, Worksheet } from '@mescius/spread-sheets-react';
import './styles.css';
import { Panel } from './panel';
export function AppFunc() {
let spread = null;
let initSpread = function (value) {
spread = value;
}
let addSheet = function () {
var activeIndex = spread.getActiveSheetIndex();
if (activeIndex >= 0) {
spread.addSheet(activeIndex + 1);
spread.setActiveSheetIndex(activeIndex + 1);
}
else {
spread.addSheet(0);
spread.setActiveSheetIndex(0);
}
}
let removeSheet = function () {
if (spread.getSheetCount() > 0) {
spread.removeSheet(spread.getActiveSheetIndex());
}
}
let clearSheet = function () {
spread.clearSheets();
}
return (
<div class="sample-tutorial">
<div class="sample-spreadsheets">
<SpreadSheets workbookInitialized={spread => initSpread(spread)}>
<Worksheet></Worksheet>
</SpreadSheets>
</div>
<Panel
addSheet={() => addSheet()}
removeSheet={() => removeSheet()}
clearSheet={() => clearSheet()}
></Panel>
</div>
);
}
import * as React from 'react';
import { SpreadSheets, Worksheet } from '@mescius/spread-sheets-react';
import './styles.css';
import { Panel } from './panel';
const Component = React.Component;
export class App extends Component {
constructor(props) {
super(props);
this.spread = null;
this.autoGenerateColumns = false;
}
render() {
return (
<div class="sample-tutorial">
<div class="sample-spreadsheets">
<SpreadSheets workbookInitialized={spread => this.initSpread(spread)}>
<Worksheet></Worksheet>
</SpreadSheets>
</div>
<Panel
addSheet={() => this.addSheet()}
removeSheet={() => this.removeSheet()}
clearSheet={() => this.clearSheet()}
></Panel>
</div>
);
}
initSpread(spread) {
this.spread = spread;
}
addSheet() {
let spread = this.spread;
var activeIndex = spread.getActiveSheetIndex();
if (activeIndex >= 0) {
spread.addSheet(activeIndex + 1);
spread.setActiveSheetIndex(activeIndex + 1);
}
else {
spread.addSheet(0);
spread.setActiveSheetIndex(0);
}
}
removeSheet() {
let spread = this.spread;
if (spread.getSheetCount() > 0) {
spread.removeSheet(spread.getActiveSheetIndex());
}
}
clearSheet() {
let spread = this.spread;
spread.clearSheets();
}
}
import * as React from 'react';
import './styles.css';
export function Panel(props) {
return (
<div class="options-container">
Adds a sheet after the active one <input type="button" value="Add Sheet" onClick={props.addSheet} />
<br />
Removes the active sheet <input type="button" value="Remove Sheets" onClick={props.removeSheet} />
<br />
Clears all the sheets from the workbook <input type="button" value="Remove All Sheets" onClick={props.clearSheet} />
</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;
}
input {
padding: 4px 6px;
}
input[type=button] {
margin-top: 6px;
display: block;
}
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/umd/react.production.min.js',
'react-dom': 'npm:react-dom/umd/react-dom.production.min.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);