Worksheet is a collection of cells organized in the form of rows and columns that allows you to store, format, and manipulate the data.
You can dynamically add or insert a sheet by one of the following ways,
Add Sheet
button in the sheet tab. This will add a new empty sheet next to current active sheet.Insert
option from the context menu to insert a new empty sheet before the current active sheet.insertSheet
method, you can insert one or more sheets at your desired index.The following code example shows the insert sheet operation in spreadsheet.
<template>
<ejs-spreadsheet ref="spreadsheet" :created="created" :showFormulaBar="false" :showRibbon="false">
<e-sheets>
<e-sheet name="Price Details">
<e-ranges>
<e-range :dataSource="dataSource"></e-range>
</e-ranges>
<e-columns>
<e-column :width=150></e-column>
<e-column :width=110></e-column>
<e-column :width=110></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
</e-columns>
</e-sheet>
</e-sheets>
</ejs-spreadsheet>
</template>
<script>
import Vue from "vue";
import { SpreadsheetPlugin } from "@syncfusion/ej2-vue-spreadsheet";
import { data } from './data.js';
Vue.use(SpreadsheetPlugin);
export default {
data: () => {
return {
dataSource: data,
}
},
methods: {
created: function () {
var spreadsheet = this.$refs.spreadsheet;
// Applies style formatting to the active sheet before inserting a new sheet
spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center' }, 'A1:H1');
spreadsheet.cellFormat({ textAlign: 'center' }, 'D2:H11');
// inserting a new sheet with data at 1st index
// You can also insert empty sheets by specifying the start and end sheet index instead of sheet model
spreadsheet.insertSheet([{
index: 1,
name: 'Inserted Sheet',
ranges: [{ dataSource: this.dataSource }],
columns: [{ width: 150 }, { width: 110 }, { width: 110 }, { width: 85 }, { width: 85 }, { width: 85 }, { width: 85 },
{ width: 85 }]
}]);
// Applies style formatting for the inserted sheet
spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center' }, 'Inserted Sheet!A1:H1');
spreadsheet.cellFormat({ textAlign: 'center' }, 'Inserted Sheet!D2:H11');
}
}
}
</script>
<style>
@import "../node_modules/@syncfusion/ej2-vue-spreadsheet/styles/material.css";
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-grids/styles/material.css';
@import "../node_modules/@syncfusion/ej2-spreadsheet/styles/material.css";
</style>
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.data = [
{
'Item Name': 'Casual Shoes',
'Date': '02/14/2019',
'Time': '11:34:32 AM',
'Quantity': 10,
'Price': 20,
'Amount': '=D2*E2',
'Discount': 1,
'Profit': 10
},
{
'Item Name': 'Sports Shoes',
'Date': '06/11/2019',
'Time': '05:56:32 AM',
'Quantity': 20,
'Price': 30,
'Amount': '=D3*E3',
'Discount': 5,
'Profit': 50
},
{
'Item Name': 'Formal Shoes',
'Date': '07/27/2019',
'Time': '03:32:44 AM',
'Quantity': 20,
'Price': 15,
'Amount': '=D4*E4',
'Discount': 7,
'Profit': 27
},
{
'Item Name': 'Sandals & Floaters',
'Date': '11/21/2019',
'Time': '06:23:54 AM',
'Quantity': 15,
'Price': 20,
'Amount': '=D5*E5',
'Discount': 11,
'Profit': 67
},
{
'Item Name': 'Flip- Flops & Slippers',
'Date': '06/23/2019',
'Time': '12:43:59 AM',
'Quantity': 30,
'Price': 10,
'Amount': '=D6*E6',
'Discount': 10,
'Profit': 70
},
{
'Item Name': 'Sneakers',
'Date': '07/22/2019',
'Time': '10:55:53 AM',
'Quantity': 40,
'Price': 20,
'Amount': '=D7*E7',
'Discount': 13,
'Profit': 66
},
{
'Item Name': 'Running Shoes',
'Date': '02/04/2019',
'Time': '03:44:34 AM',
'Quantity': 20,
'Price': 10,
'Amount': '=D8*E8',
'Discount': 3,
'Profit': 14
},
{
'Item Name': 'Loafers',
'Date': '11/30/2019',
'Time': '03:12:52 AM',
'Quantity': 31,
'Price': 10,
'Amount': '=D9*E9',
'Discount': 6,
'Profit': 29
},
{
'Item Name': 'Cricket Shoes',
'Date': '07/09/2019',
'Time': '11:32:14 AM',
'Quantity': 41,
'Price': 30,
'Amount': '=D10*E10',
'Discount': 12,
'Profit': 166
},
{
'Item Name': 'T-Shirts',
'Date': '10/31/2019',
'Time': '12:01:44 AM',
'Quantity': 50,
'Price': 10,
'Amount': '=D11*E11',
'Discount': 9,
'Profit': 55
}
];
});
The Spreadsheet has support for removing an existing worksheet. You can dynamically delete the existing sheet by the following way,
Delete
option from context menu.delete
method to delete the sheets.You can dynamically rename an existing worksheet in the following way,
Rename
option from the context menu.By default, the row and column headers are visible in worksheets. You can dynamically show or hide worksheet headers by using one of the following ways,
View
tab, and then select Hide Headers
option to hide both the row and column headers.showHeaders
property in sheets
as true
or false
to show or hide the headers at initial load. By default, the showHeaders
property is enabled in each worksheet.Gridlines act as a border like appearance of cells. They are used to distinguish cells on the worksheet. You can dynamically show or hide gridlines by using one of the following ways,
View
tab, and then select Hide Gridlines
option to hide the gridlines in worksheet.showGridLines
property in sheets
as true
or false
to show or hide the gridlines at initial load. By default, the showGridLines
property is enabled in each worksheet.The following code example shows the headers and gridlines operation in spreadsheet.
<template>
<ejs-spreadsheet ref="spreadsheet" :created="created" :showFormulaBar="false"
:showSheetTabs="false">
<e-sheets>
<!-- Hiding the headers and gridlines in 'Price Details' sheet -->
<e-sheet :showGridLines="false" :showHeaders="false">
<e-ranges>
<e-range :dataSource="dataSource"></e-range>
</e-ranges>
<e-columns>
<e-column :width=150></e-column>
<e-column :width=110></e-column>
<e-column :width=110></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
</e-columns>
</e-sheet>
</e-sheets>
</ejs-spreadsheet>
</template>
<script>
import Vue from "vue";
import { SpreadsheetPlugin } from "@syncfusion/ej2-vue-spreadsheet";
import { data } from './data.js';
Vue.use(SpreadsheetPlugin);
export default {
data: () => {
return {
dataSource: data,
}
},
methods: {
created: function () {
var spreadsheet = this.$refs.spreadsheet;
spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center' }, 'A1:H1');
spreadsheet.cellFormat({ textAlign: 'center' }, 'D2:H11');
// The gridlines have been removed to set border for the range of cells
spreadsheet.setBorder({ border: '1px solid #e0e0e0' }, 'A1:H11');
}
}
}
</script>
<style>
@import "../node_modules/@syncfusion/ej2-vue-spreadsheet/styles/material.css";
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-grids/styles/material.css';
@import "../node_modules/@syncfusion/ej2-spreadsheet/styles/material.css";
</style>
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.data = [
{
'Item Name': 'Casual Shoes',
'Date': '02/14/2019',
'Time': '11:34:32 AM',
'Quantity': 10,
'Price': 20,
'Amount': '=D2*E2',
'Discount': 1,
'Profit': 10
},
{
'Item Name': 'Sports Shoes',
'Date': '06/11/2019',
'Time': '05:56:32 AM',
'Quantity': 20,
'Price': 30,
'Amount': '=D3*E3',
'Discount': 5,
'Profit': 50
},
{
'Item Name': 'Formal Shoes',
'Date': '07/27/2019',
'Time': '03:32:44 AM',
'Quantity': 20,
'Price': 15,
'Amount': '=D4*E4',
'Discount': 7,
'Profit': 27
},
{
'Item Name': 'Sandals & Floaters',
'Date': '11/21/2019',
'Time': '06:23:54 AM',
'Quantity': 15,
'Price': 20,
'Amount': '=D5*E5',
'Discount': 11,
'Profit': 67
},
{
'Item Name': 'Flip- Flops & Slippers',
'Date': '06/23/2019',
'Time': '12:43:59 AM',
'Quantity': 30,
'Price': 10,
'Amount': '=D6*E6',
'Discount': 10,
'Profit': 70
},
{
'Item Name': 'Sneakers',
'Date': '07/22/2019',
'Time': '10:55:53 AM',
'Quantity': 40,
'Price': 20,
'Amount': '=D7*E7',
'Discount': 13,
'Profit': 66
},
{
'Item Name': 'Running Shoes',
'Date': '02/04/2019',
'Time': '03:44:34 AM',
'Quantity': 20,
'Price': 10,
'Amount': '=D8*E8',
'Discount': 3,
'Profit': 14
},
{
'Item Name': 'Loafers',
'Date': '11/30/2019',
'Time': '03:12:52 AM',
'Quantity': 31,
'Price': 10,
'Amount': '=D9*E9',
'Discount': 6,
'Profit': 29
},
{
'Item Name': 'Cricket Shoes',
'Date': '07/09/2019',
'Time': '11:32:14 AM',
'Quantity': 41,
'Price': 30,
'Amount': '=D10*E10',
'Discount': 12,
'Profit': 166
},
{
'Item Name': 'T-Shirts',
'Date': '10/31/2019',
'Time': '12:01:44 AM',
'Quantity': 50,
'Price': 10,
'Amount': '=D11*E11',
'Discount': 9,
'Profit': 55
}
];
});
Hiding a worksheet can help prevent unauthorized or accidental changes to your file.
There are three visibility state as like Microsoft Excel,
State | Description |
---|---|
Visible |
You can see the worksheet once the component is loaded. |
Hidden |
This worksheet is not visible, but you can unhide by selecting the sheet from List All Sheets dropdown menu. |
VeryHidden |
This worksheet is not visible and cannot be unhidden. Changing the state property to Visible is the only way to view this sheet. |
The following code example shows the three types of sheet visibility state.
<template>
<ejs-spreadsheet ref="spreadsheet" :created="created" :openUrl="openUrl"
:saveUrl="saveUrl" :showFormulaBar="false" :showRibbon="false">
<e-sheets>
<!-- By default, state is set as 'visible'. We don’t need to said it in the sample. -->
<e-sheet name="Visible Sheet" state="Visible">
<e-ranges>
<e-range :dataSource="dataSource"></e-range>
</e-ranges>
<e-columns>
<e-column :width=150></e-column>
<e-column :width=110></e-column>
<e-column :width=110></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
</e-columns>
</e-sheet>
<!-- Sets sheet state as 'VeryHidden'. It can't be unhidden. -->
<e-sheet name="Very Hidden Sheet" state="VeryHidden">
<e-ranges>
<e-range :dataSource="dataSource"></e-range>
</e-ranges>
<e-columns>
<e-column :width=150></e-column>
<e-column :width=110></e-column>
<e-column :width=110></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
</e-columns>
</e-sheet>
<!-- Sets sheet state as 'Hidden'. It can be unhidden dynamically. -->
<e-sheet name="Hidden Sheet" state="Hidden">
<e-ranges>
<e-range :dataSource="dataSource"></e-range>
</e-ranges>
<e-columns>
<e-column :width=150></e-column>
<e-column :width=110></e-column>
<e-column :width=110></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
<e-column :width=85></e-column>
</e-columns>
</e-sheet>
</e-sheets>
</ejs-spreadsheet>
</template>
<script>
import Vue from "vue";
import { SpreadsheetPlugin } from "@syncfusion/ej2-vue-spreadsheet";
import { data } from './data.js';
Vue.use(SpreadsheetPlugin);
export default {
data: () => {
return {
dataSource: data,
openUrl: 'https://ej2services.syncfusion.com/production/web-services/api/spreadsheet/open';
saveUrl: 'https://ej2services.syncfusion.com/production/web-services/api/spreadsheet/save'
}
},
methods: {
created: function () {
var spreadsheet = this.$refs.spreadsheet;
// Applies style formatting to active visible sheet
spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center' }, 'A1:H1');
spreadsheet.cellFormat({ textAlign: 'center' }, 'D2:H11');
// Applies style formatting to active hidden sheet
spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center' }, 'Hidden Sheet!A1:H1');
spreadsheet.cellFormat({ textAlign: 'center' }, 'Hidden Sheet!D2:H11');
}
}
}
</script>
<style>
@import "../node_modules/@syncfusion/ej2-vue-spreadsheet/styles/material.css";
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-grids/styles/material.css';
@import "../node_modules/@syncfusion/ej2-spreadsheet/styles/material.css";
</style>
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.data = [
{
'Item Name': 'Casual Shoes',
'Date': '02/14/2019',
'Time': '11:34:32 AM',
'Quantity': 10,
'Price': 20,
'Amount': '=D2*E2',
'Discount': 1,
'Profit': 10
},
{
'Item Name': 'Sports Shoes',
'Date': '06/11/2019',
'Time': '05:56:32 AM',
'Quantity': 20,
'Price': 30,
'Amount': '=D3*E3',
'Discount': 5,
'Profit': 50
},
{
'Item Name': 'Formal Shoes',
'Date': '07/27/2019',
'Time': '03:32:44 AM',
'Quantity': 20,
'Price': 15,
'Amount': '=D4*E4',
'Discount': 7,
'Profit': 27
},
{
'Item Name': 'Sandals & Floaters',
'Date': '11/21/2019',
'Time': '06:23:54 AM',
'Quantity': 15,
'Price': 20,
'Amount': '=D5*E5',
'Discount': 11,
'Profit': 67
},
{
'Item Name': 'Flip- Flops & Slippers',
'Date': '06/23/2019',
'Time': '12:43:59 AM',
'Quantity': 30,
'Price': 10,
'Amount': '=D6*E6',
'Discount': 10,
'Profit': 70
},
{
'Item Name': 'Sneakers',
'Date': '07/22/2019',
'Time': '10:55:53 AM',
'Quantity': 40,
'Price': 20,
'Amount': '=D7*E7',
'Discount': 13,
'Profit': 66
},
{
'Item Name': 'Running Shoes',
'Date': '02/04/2019',
'Time': '03:44:34 AM',
'Quantity': 20,
'Price': 10,
'Amount': '=D8*E8',
'Discount': 3,
'Profit': 14
},
{
'Item Name': 'Loafers',
'Date': '11/30/2019',
'Time': '03:12:52 AM',
'Quantity': 31,
'Price': 10,
'Amount': '=D9*E9',
'Discount': 6,
'Profit': 29
},
{
'Item Name': 'Cricket Shoes',
'Date': '07/09/2019',
'Time': '11:32:14 AM',
'Quantity': 41,
'Price': 30,
'Amount': '=D10*E10',
'Discount': 12,
'Profit': 166
},
{
'Item Name': 'T-Shirts',
'Date': '10/31/2019',
'Time': '12:01:44 AM',
'Quantity': 50,
'Price': 10,
'Amount': '=D11*E11',
'Discount': 9,
'Profit': 55
}
];
});
You can refer to our Vue Spreadsheet feature tour page for its groundbreaking feature representations. You can also explore our Vue Spreadsheet example to knows how to present and manipulate data.