Sheets Reorder

You can reorder Worksheets and TableSheets by reordering the tabs of tab strip.

Description
app.vue
index.html
Copy to CodeMine

You can get the sheet position by using the getSheetPosition method, for example:

/**
 * Gets the sheet tab position with the specified name.
 * @param {string} name The sheet tab name.
 * @returns {number} The sheet tab position, based on the Worksheet and TableSheet collection.
 */
getSheetPosition(sheetName: string): number;

//This example uses the getSheetPosition method.
spread.setSheetCount(5);
spread.addSheetTab(0, "tableSheet1", GC.Spread.Sheets.SheetType.tableSheet);
var position = spread.getSheetPosition("tableSheet1");
console.log(position); // 5

You can also change the sheet position by using the changeSheetPosition method, for example:

/**
 * Change sheet position and reorder sheets.
 * @param {string} sheetName The sheet name.
 * @param {number} targetPosition The target position.
 */
changeSheetPosition(sheetName: string, targetPosition: number): boolean;

//This example show how to change sheet position.
spread.setSheetCount(5);
spread.addSheetTab(0, "tableSheet1", GC.Spread.Sheets.SheetType.tableSheet); // The sheets sequence should be "Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5", "tableSheet1".
spread.changeSheetPosition("tableSheet1", 3); // The sheets sequence should be "Sheet1", "Sheet2", "Sheet3", "tableSheet1", "Sheet4", "Sheet5".

In addition, the sub property sheetPosition is added for event GC.Spread.Sheets.Events.SheetChanging and event GC.Spread.Sheets.Events.SheetChanged.

spread.bind(GC.Spread.Sheets.Events.SheetChanging, function (e, args) {
    console.log(args.sheetPosition);
});

spread.bind(GC.Spread.Sheets.Events.SheetChanged, function (e, args) {
    console.log(args.sheetPosition);
});
You can get the sheet position by using the getSheetPosition method, for example: You can also change the sheet position by using the changeSheetPosition method, for example: In addition, the sub property sheetPosition is added for event GC.Spread.Sheets.Events.SheetChanging and event GC.Spread.Sheets.Events.SheetChanged.
/*REPLACE_MARKER*/ /*DO NOT DELETE THESE COMMENTS*/ <template> <div class="sample-tutorial"> <gc-spread-sheets class="sample-spreadsheets" @workbookInitialized="initSpread"> <gc-worksheet></gc-worksheet> <gc-worksheet></gc-worksheet> <gc-worksheet></gc-worksheet> </gc-spread-sheets> <div class="options-container"> <div class="option-row"> <input type="button" id="getSheetPosition" value="Get Sheet Position" @click="onClick" /> </div> <div class="option-row"> <input id="sheetPosition" :value="sheetPosition" /> </div> </div> </div> </template> <script setup> import GC from "@mescius/spread-sheets"; import { ref } from "vue"; import "@mescius/spread-sheets-vue"; import '@mescius/spread-sheets-tablesheet'; let spread = null; const sheetPosition = ref(''); const initSpread = (s) => { spread = s; spread.suspendPaint(); spread.options.autoFitType = GC.Spread.Sheets.AutoFitType.cellWithHeader; // init a data manager const tableName = "Supplier"; const baseApiUrl = getBaseApiUrl(); const apiUrl = baseApiUrl + "/" + tableName; const dataManager = spread.dataManager(); const myTable = dataManager.addTable( "myTable", { remote: { read: { url: apiUrl }, } }); // init a table sheet const sheet = spread.addSheetTab(0, "TableSheet1", GC.Spread.Sheets.SheetType.tableSheet); sheet.options.allowAddNew = false; //hide new row // bind a view to the table sheet myTable.fetch().then(function () { const view = myTable.addView( "myView", [ { value: "Id", width: 80 }, { value: "CompanyName", width: 200, caption: "Company Name" }, { value: "ContactName", width: 150, caption: "Contact" }, { value: "ContactTitle", width: 200, caption: "Title" }, { value: "Address", width: 200 }, { value: "City", width: 150, caption: "City" }, { value: "State", width: 100, caption: "State" }, { value: "Region", width: 100, caption: "Region" } ] ); sheet.setDataView(view); }); spread.resumePaint(); }; const onClick = () => { sheetPosition.value = getSheetPositionInfo(spread); } function getSheetPositionInfo(spread) { let sheetName, sheet = spread.getActiveSheet(); if (sheet) { sheetName = sheet.name(); } else { sheet = spread.getActiveSheetTab(); if (sheet) { sheetName = sheet.name(); } } if (sheetName) { return sheetName + "'s position is " + spread.getSheetPosition(sheetName); } else { return ""; } } function getBaseApiUrl() { return window.location.href.match(/http.+spreadjs\/demos\//)[0] + 'server/api'; } </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; } .option-row { font-size: 14px; padding: 5px; } 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-tablesheet': 'npm:@mescius/spread-sheets-tablesheet/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);