Visibility

SpreadJS allows you to show or hide the sheets. This is useful if you want to access the data in the hidden sheet, but not let the users see the data.

Description
app.jsx
app-func.jsx
app-class.jsx
index.html
styles.css
Copy to CodeMine

Use the sheet.visible() method and sheetTabVisible to change whether the sheet is visible or get the visible status of the sheet. The visible states:

  • hidden: The sheet tab is hidden, effect is equal to false.
  • visible: The sheet tab is visible, effect is equal to true, and it is the default value of sheetTabVisible.
  • veryHidden: The sheet tab is very hidden. If you want to get a sheet visible status in the Spread component, you just need the following code:
    sheet.visible();

If you want to hide a sheet in the Spread component, you just need the following code:

    sheet.visible(false);
    // or
    sheet.visible(SheetTabVisible.hidden);

If you want to hide a sheet deeply (which means it cannot unhidden with the UI) in the Spread component, you just need the following code:

    sheet.visible(SheetTabVisible.veryHidden);
Use the sheet.visible() method and sheetTabVisible to change whether the sheet is visible or get the visible status of the sheet. The visible states: hidden: The sheet tab is hidden, effect is equal to false. visible: The sheet tab is visible, effect is equal to true, and it is the default value of sheetTabVisible. veryHidden: The sheet tab is very hidden. If you want to get a sheet visible status in the Spread component, you just need the following code: If you want to hide a sheet in the Spread component, you just need the following code: If you want to hide a sheet deeply (which means it cannot unhidden with the UI) in the Spread component, you just need the following code:
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 { useState } from 'react'; import { SpreadSheets, Worksheet } from '@mescius/spread-sheets-react'; import './styles.css'; export function AppFunc() { const [spread, setSpread] = useState(null); const initSpread = (spread) => { setSpread(spread); } const showSheet = () => { for (let i = 0; i < spread.sheets.length; i++) { if (spread.sheets[i].visible() === 0) { spread.sheets[i].visible(true); break; } } } const hideSheet = () => { var sheet = spread.getActiveSheet(); if (sheet) { var activeIndex = spread.getActiveSheetIndex(); if (activeIndex - 1 >= 0) { spread.setActiveSheetIndex(activeIndex - 1); } sheet.visible(false); } } const btnShowVeryHidden = () => { for (var i = 0; i < spread.sheets.length; i++) { if (spread.sheets[i].visible() === 2) { spread.sheets[i].visible(true); break; } } } const btnVeryHidden = () => { var sheet = spread.getActiveSheet(); if (sheet) { sheet.visible(2); } } return ( <div class="sample-tutorial"> <div class="sample-spreadsheets"> <SpreadSheets workbookInitialized={spread => initSpread(spread)}> <Worksheet></Worksheet> </SpreadSheets> </div> <Panel showSheet={() => showSheet()} hideSheet={() => hideSheet()} btnShowVeryHidden={() => btnShowVeryHidden()} btnVeryHidden={() => btnVeryHidden()} ></Panel> </div> ); } function Panel(props) { return ( <div className="options-container"> <div className="options-row"> <input type="button" value="Hide Sheet" onClick={props.hideSheet} /> </div> <div className="options-row"> <input type="button" value="Show Sheet" onClick={props.showSheet} /> </div> <div className="options-row"> <input type="button" value="Very Hide Sheet" onClick={props.btnVeryHidden} /> </div> <div className="options-row"> <input type="button" value="Show Very Hide Sheet" onClick={props.btnShowVeryHidden} /> </div> </div> ); }
import * as React from 'react'; import { SpreadSheets, Worksheet } from '@mescius/spread-sheets-react'; import './styles.css'; const Component = React.Component; 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 showSheet={() => this.showSheet()} hideSheet={() => this.hideSheet()} btnShowVeryHidden={() => this.btnShowVeryHidden()} btnVeryHidden={() => this.btnVeryHidden()} ></Panel> </div> ); } initSpread(spread) { this.spread = spread; } showSheet() { let spread = this.spread; for (var i = 0; i < spread.sheets.length; i++) { if (spread.sheets[i].visible() === 0) { spread.sheets[i].visible(true); break; } } } hideSheet() { let spread = this.spread; var sheet = spread.getActiveSheet(); if (sheet) { var activeIndex = spread.getActiveSheetIndex(); if (activeIndex - 1 >= 0) { spread.setActiveSheetIndex(activeIndex - 1); } sheet.visible(false); } } btnShowVeryHidden() { let spread = this.spread; for (var i = 0; i < spread.sheets.length; i++) { if (spread.sheets[i].visible() === 2) { spread.sheets[i].visible(true); break; } } } btnVeryHidden() { let spread = this.spread; var sheet = spread.getActiveSheet(); if (sheet) { sheet.visible(2); } } } function Panel(props) { return ( <div className="options-container"> <div className="options-row"> <input type="button" value="Hide Sheet" onClick={props.hideSheet} /> </div> <div className="options-row"> <input type="button" value="Show Sheet" onClick={props.showSheet} /> </div> <div className="options-row"> <input type="button" value="Very Hide Sheet" onClick={props.btnVeryHidden} /> </div> <div className="options-row"> <input type="button" value="Show Very Hide Sheet" onClick={props.btnShowVeryHidden} /> </div> </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; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #app { height: 100%; } .options-container { float: right; width: 280px; padding: 12px; height: 100%; box-sizing: border-box; background: #fbfbfb; overflow: auto; } .options-row { font-size: 14px; padding: 5px; margin-top: 10px; } input { display: inline-block; } input[type="text"] { width: 200px; } label { margin-bottom: 6px; }
(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);