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.vue
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:
<template> <div class="sample-tutorial"> <gc-spread-sheets class="sample-spreadsheets" @workbookInitialized="initSpread"> <gc-worksheet></gc-worksheet> </gc-spread-sheets> <div class="options-container"> <div class="options-row"> <input type="button" value="Show Sheet" @click="showSheet()"/> </div> <div class="options-row"> <input type="button" value="Hide Sheet" @click="hideSheet()"/> </div> <div class="options-row"> <input type="button" value="Very Hide Sheet" @click="btnVeryHidden()"/> </div> <div class="options-row"> <input type="button" value="Show Very Hide Sheet" @click="btnShowVeryHidden()"/> </div> </div> </div> </template> <script> import Vue from 'vue'; import '@mescius/spread-sheets-vue' import GC from '@mescius/spread-sheets'; import './styles.css'; let App = Vue.extend({ name: "app", data: function () { return { spread: null, autoGenerateColumns: true, setZoom: 1 }; }, watch: { }, methods: { initSpread: function (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); } } } }); new Vue({render: h => h(App)}).$mount('#app'); </script>
<!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/vue/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/vue/node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> System.import('./src/app.vue'); System.import('$DEMOROOT$/en/lib/vue/license.js'); </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; } .options-row { font-size: 14px; padding: 5px; margin-top: 10px; } input { display: inline-block; } input[type="text"] { width: 160px; } label { display: inline-block; margin-bottom: 6px; width: 200px; } select { width: 120px; height: 35px; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }
(function (global) { System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, meta: { '*.css': { loader: 'css' }, '*.vue': { loader: 'vue-loader' } }, 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-vue': 'npm:@mescius/spread-sheets-vue/index.js', '@grapecity/jsob-test-dependency-package/react-components': 'npm:@grapecity/jsob-test-dependency-package/react-components/index.js', 'jszip': 'npm:jszip/dist/jszip.js', 'css': 'npm:systemjs-plugin-css/css.js', 'vue': 'npm:vue/dist/vue.min.js', 'vue-loader': 'npm:systemjs-vue-browser/index.js', 'tiny-emitter': 'npm:tiny-emitter/index.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: 'js' }, rxjs: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' } } }); })(this);