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
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 setup> import { ref, watch } from "vue"; import "@mescius/spread-sheets-vue"; const spreadRef = ref(null); let initSpread = function (spread) { spreadRef.value = spread; } function showSheet() { let spread = spreadRef.value; for (var i = 0; i < spread.sheets.length; i++) { if (spread.sheets[i].visible() === 0) { spread.sheets[i].visible(true); break; } } } function hideSheet() { let spread = spreadRef.value; var sheet = spread.getActiveSheet(); if (sheet) { var activeIndex = spread.getActiveSheetIndex(); if (activeIndex - 1 >= 0) { spread.setActiveSheetIndex(activeIndex - 1); } sheet.visible(false); } } function btnShowVeryHidden() { let spread = spreadRef.value; for (var i = 0; i < spread.sheets.length; i++) { if (spread.sheets[i].visible() === 2) { spread.sheets[i].visible(true); break; } } } function btnVeryHidden() { let spread = spreadRef.value; var sheet = spread.getActiveSheet(); if (sheet) { sheet.visible(2); } } </script> <style scoped> #app { height: 100%; } .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; } </style>
<!DOCTYPE html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>SpreadJS VUE</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/vue3/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/en/vue3/node_modules/systemjs/dist/system.src.js"></script> <script src="./systemjs.config.js"></script> <script src="./compiler.js" type="module"></script> <script> var System = SystemJS; System.import("./src/app.js"); System.import('$DEMOROOT$/en/lib/vue3/license.js'); </script> </head> <body> <div id="app"></div> </body> </html>
(function (global) { SystemJS.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, packageConfigPaths: [ './node_modules/*/package.json', "./node_modules/@mescius/*/package.json", "./node_modules/@babel/*/package.json", "./node_modules/@vue/*/package.json" ], map: { 'vue': "npm:vue/dist/vue.esm-browser.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", '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-resources-en': 'npm:@mescius/spread-sheets-resources-en/index.js', '@mescius/spread-sheets-vue': 'npm:@mescius/spread-sheets-vue/index.js' }, meta: { '*.css': { loader: 'systemjs-plugin-css' }, '*.vue': { loader: "../plugin-vue/index.js" } } }); })(this);