Excel.WorksheetCollection class

Represents a collection of worksheet objects that are part of the workbook.

Extends

Remarks

[ API set: ExcelApi 1.1 ]

Properties

context

The request context associated with the object. This connects the add-in's process to the Office host application's process.

items

Gets the loaded child items in this collection.

Methods

add(name)

Adds a new worksheet to the workbook. The worksheet will be added at the end of existing worksheets. If you wish to activate the newly added worksheet, call .activate() on it.

addFromBase64(base64File, sheetNamesToInsert, positionType, relativeTo)

Inserts the specified worksheets of a workbook into the current workbook.

Note*: This API is currently only supported for Office on Windows and Mac. And it has been deprecated, please use Workbook.insertWorksheetFromBase64 instead.

addFromBase64(base64File, sheetNamesToInsert, positionTypeString, relativeTo)

Inserts the specified worksheets of a workbook into the current workbook.

Note*: This API is currently only supported for Office on Windows and Mac. And it has been deprecated, please use Workbook.insertWorksheetFromBase64 instead.

getActiveWorksheet()

Gets the currently active worksheet in the workbook.

getCount(visibleOnly)

Gets the number of worksheets in the collection.

getFirst(visibleOnly)

Gets the first worksheet in the collection.

getItem(key)

Gets a worksheet object using its name or ID.

getItemOrNullObject(key)

Gets a worksheet object using its name or ID. If the worksheet does not exist, then this method returns an object with its isNullObject property set to true. For further information, see *OrNullObject methods and properties.

getLast(visibleOnly)

Gets the last worksheet in the collection.

load(options)

Queues up a command to load the specified properties of the object. You must call context.sync() before reading the properties.

load(propertyNames)

Queues up a command to load the specified properties of the object. You must call context.sync() before reading the properties.

load(propertyNamesAndPaths)

Queues up a command to load the specified properties of the object. You must call context.sync() before reading the properties.

toJSON()

Overrides the JavaScript toJSON() method in order to provide more useful output when an API object is passed to JSON.stringify(). (JSON.stringify, in turn, calls the toJSON method of the object that is passed to it.) Whereas the original Excel.WorksheetCollection object is an API object, the toJSON method returns a plain JavaScript object (typed as Excel.Interfaces.WorksheetCollectionData) that contains an "items" array with shallow copies of any loaded properties from the collection's items.

Events

onActivated

Occurs when any worksheet in the workbook is activated.

onAdded

Occurs when a new worksheet is added to the workbook.

onCalculated

Occurs when any worksheet in the workbook is calculated.

onChanged

Occurs when any worksheet in the workbook is changed.

onColumnSorted

Occurs when one or more columns have been sorted. This happens as the result of a left-to-right sort operation.

onDeactivated

Occurs when any worksheet in the workbook is deactivated.

onDeleted

Occurs when a worksheet is deleted from the workbook.

onFiltered

Occurs when any worksheet's filter is applied in the workbook.

onFormatChanged

Occurs when any worksheet in the workbook has a format changed.

onFormulaChanged

Occurs when one or more formulas are changed in any worksheet of this collection. This event is for when the formula itself changes, not the data value resulting from the formula's calculation.

onMoved

Occurs when a worksheet is moved within a workbook. This event only triggers when a worksheet is directly moved within a workbook. This event doesn't trigger when the position of a worksheet is indirectly changed, such as when a new worksheet is inserted and causes existing worksheets to change positions.

onNameChanged

Occurs when the worksheet name is changed in the worksheet collection.

onProtectionChanged

Occurs when the worksheet protection state is changed.

onRowHiddenChanged

Occurs when the hidden state of one or more rows has changed on a specific worksheet.

onRowSorted

Occurs when one or more rows have been sorted. This happens as the result of a top-to-bottom sort operation.

onSelectionChanged

Occurs when the selection changes on any worksheet.

onSingleClicked

Occurs when left-clicked/tapped operation happens in the worksheet collection. This event will not be fired when clicking in the following cases: - The user drags the mouse for multi-selection. - The user selects a cell in the mode when cell arguments are selected for formula references.

onVisibilityChanged

Occurs when the worksheet visibility is changed in the worksheet collection.

Property Details

context

The request context associated with the object. This connects the add-in's process to the Office host application's process.

context: RequestContext;

Property Value

items

Gets the loaded child items in this collection.

readonly items: Excel.Worksheet[];

Property Value

Method Details

add(name)

Adds a new worksheet to the workbook. The worksheet will be added at the end of existing worksheets. If you wish to activate the newly added worksheet, call .activate() on it.

add(name?: string): Excel.Worksheet;

Parameters

name

string

Optional. The name of the worksheet to be added. If specified, the name should be unique. If not specified, Excel determines the name of the new worksheet.

Returns

Remarks

[ API set: ExcelApi 1.1 ]

Examples

await Excel.run(async (context) => { 
    const wSheetName = 'Sample Name';
    const worksheet = context.workbook.worksheets.add(wSheetName);
    worksheet.load('name');
    await context.sync();
    
    console.log(worksheet.name);
});

addFromBase64(base64File, sheetNamesToInsert, positionType, relativeTo)

Note

This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Inserts the specified worksheets of a workbook into the current workbook.

Note*: This API is currently only supported for Office on Windows and Mac. And it has been deprecated, please use Workbook.insertWorksheetFromBase64 instead.

addFromBase64(base64File: string, sheetNamesToInsert?: string[], positionType?: Excel.WorksheetPositionType, relativeTo?: Worksheet | string): OfficeExtension.ClientResult<string[]>;

Parameters

base64File

string

Required. The base64-encoded string representing the source workbook file.

sheetNamesToInsert

string[]

Optional. The names of individual worksheets to insert. By default, all the worksheets from the source workbook are inserted.

positionType
Excel.WorksheetPositionType

Optional. Where in the current workbook the new worksheets will be inserted. See Excel.WorksheetPositionType for details. Default is "Start".

relativeTo

Excel.Worksheet | string

Optional. The worksheet in the current workbook that is referenced for the positionType parameter. Default is null and, based on positionType, it will insert worksheets at the start or end of the current workbook.

Returns

An array of IDs corresponding to each newly inserted worksheet.

Remarks

[ API set: ExcelApi BETA (PREVIEW ONLY) ]

addFromBase64(base64File, sheetNamesToInsert, positionTypeString, relativeTo)

Note

This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Inserts the specified worksheets of a workbook into the current workbook.

Note*: This API is currently only supported for Office on Windows and Mac. And it has been deprecated, please use Workbook.insertWorksheetFromBase64 instead.

addFromBase64(base64File: string, sheetNamesToInsert?: string[], positionTypeString?: "None" | "Before" | "After" | "Beginning" | "End", relativeTo?: Worksheet | string): OfficeExtension.ClientResult<string[]>;

Parameters

base64File

string

Required. The base64-encoded string representing the source workbook file.

sheetNamesToInsert

string[]

Optional. The names of individual worksheets to insert. By default, all the worksheets from the source workbook are inserted.

positionTypeString

"None" | "Before" | "After" | "Beginning" | "End"

Optional. Where in the current workbook the new worksheets will be inserted. See Excel.WorksheetPositionType for details. Default is "Start".

relativeTo

Excel.Worksheet | string

Optional. The worksheet in the current workbook that is referenced for the positionType parameter. Default is null and, based on positionType, it will insert worksheets at the start or end of the current workbook.

Returns

An array of IDs corresponding to each newly inserted worksheet.

Remarks

[ API set: ExcelApi BETA (PREVIEW ONLY) ]

getActiveWorksheet()

Gets the currently active worksheet in the workbook.

getActiveWorksheet(): Excel.Worksheet;

Returns

Remarks

[ API set: ExcelApi 1.1 ]

Examples

await Excel.run(async (context) => {  
    const activeWorksheet = context.workbook.worksheets.getActiveWorksheet();
    activeWorksheet.load('name');
    await context.sync();
    console.log(activeWorksheet.name);
});

getCount(visibleOnly)

Gets the number of worksheets in the collection.

getCount(visibleOnly?: boolean): OfficeExtension.ClientResult<number>;

Parameters

visibleOnly

boolean

Optional. If true, considers only visible worksheets, skipping over any hidden ones.

Returns

Remarks

[ API set: ExcelApi 1.4 ]

getFirst(visibleOnly)

Gets the first worksheet in the collection.

getFirst(visibleOnly?: boolean): Excel.Worksheet;

Parameters

visibleOnly

boolean

Optional. If true, considers only visible worksheets, skipping over any hidden ones.

Returns

Remarks

[ API set: ExcelApi 1.5 ]

Examples

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml

await Excel.run(async (context) => {
    const sheets = context.workbook.worksheets;

    // We don't want to include the default worksheet that was created
    // when the workbook was created, so our "firstSheet" will be the one
    // after the literal first. Note chaining of navigation methods.
    const firstSheet = sheets.getFirst().getNext();
    const lastSheet = sheets.getLast();
    const firstTaxRateRange = firstSheet.getRange("B2");
    const lastTaxRateRange = lastSheet.getRange("B2");

    firstSheet.load("name");
    lastSheet.load("name");
    firstTaxRateRange.load("text");
    lastTaxRateRange.load("text");

    await context.sync();

    let firstYear = firstSheet.name.substr(5, 4);
    let lastYear = lastSheet.name.substr(5, 4);
    console.log(`Tax Rate change from ${firstYear} to ${lastYear}`, `Tax rate for ${firstYear}: ${firstTaxRateRange.text[0][0]}\nTax rate for ${lastYear}: ${lastTaxRateRange.text[0][0]}`)

    await context.sync();
});

getItem(key)

Gets a worksheet object using its name or ID.

getItem(key: string): Excel.Worksheet;

Parameters

key

string

The name or ID of the worksheet.

Returns

Remarks

[ API set: ExcelApi 1.1 ]

getItemOrNullObject(key)

Gets a worksheet object using its name or ID. If the worksheet does not exist, then this method returns an object with its isNullObject property set to true. For further information, see *OrNullObject methods and properties.

getItemOrNullObject(key: string): Excel.Worksheet;

Parameters

key

string

The name or ID of the worksheet.

Returns

Remarks

[ API set: ExcelApi 1.4 ]

getLast(visibleOnly)

Gets the last worksheet in the collection.

getLast(visibleOnly?: boolean): Excel.Worksheet;

Parameters

visibleOnly

boolean

Optional. If true, considers only visible worksheets, skipping over any hidden ones.

Returns

Remarks

[ API set: ExcelApi 1.5 ]

Examples

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/54-worksheet/reference-worksheets-by-relative-position.yaml

await Excel.run(async (context) => {
    const sheets = context.workbook.worksheets;

    // We don't want to include the default worksheet that was created
    // when the workbook was created, so our "firstSheet" will be the one
    // after the literal first. Note chaining of navigation methods.
    const firstSheet = sheets.getFirst().getNext();
    const lastSheet = sheets.getLast();
    const firstTaxRateRange = firstSheet.getRange("B2");
    const lastTaxRateRange = lastSheet.getRange("B2");

    firstSheet.load("name");
    lastSheet.load("name");
    firstTaxRateRange.load("text");
    lastTaxRateRange.load("text");

    await context.sync();

    let firstYear = firstSheet.name.substr(5, 4);
    let lastYear = lastSheet.name.substr(5, 4);
    console.log(`Tax Rate change from ${firstYear} to ${lastYear}`, `Tax rate for ${firstYear}: ${firstTaxRateRange.text[0][0]}\nTax rate for ${lastYear}: ${lastTaxRateRange.text[0][0]}`)

    await context.sync();
});

load(options)

Queues up a command to load the specified properties of the object. You must call context.sync() before reading the properties.

load(options?: Excel.Interfaces.WorksheetCollectionLoadOptions & Excel.Interfaces.CollectionLoadOptions): Excel.WorksheetCollection;

Parameters

options

Excel.Interfaces.WorksheetCollectionLoadOptions & Excel.Interfaces.CollectionLoadOptions

Provides options for which properties of the object to load.

Returns

load(propertyNames)

Queues up a command to load the specified properties of the object. You must call context.sync() before reading the properties.

load(propertyNames?: string | string[]): Excel.WorksheetCollection;

Parameters

propertyNames

string | string[]

A comma-delimited string or an array of strings that specify the properties to load.

Returns

Examples

await Excel.run(async (context) => { 
    const worksheets = context.workbook.worksheets;
    worksheets.load('items');
    await context.sync();
    
    for (let i = 0; i < worksheets.items.length; i++) {
        console.log(worksheets.items[i].name);
    }
});

load(propertyNamesAndPaths)

Queues up a command to load the specified properties of the object. You must call context.sync() before reading the properties.

load(propertyNamesAndPaths?: OfficeExtension.LoadOption): Excel.WorksheetCollection;

Parameters

propertyNamesAndPaths
OfficeExtension.LoadOption

propertyNamesAndPaths.select is a comma-delimited string that specifies the properties to load, and propertyNamesAndPaths.expand is a comma-delimited string that specifies the navigation properties to load.

Returns

toJSON()

Overrides the JavaScript toJSON() method in order to provide more useful output when an API object is passed to JSON.stringify(). (JSON.stringify, in turn, calls the toJSON method of the object that is passed to it.) Whereas the original Excel.WorksheetCollection object is an API object, the toJSON method returns a plain JavaScript object (typed as Excel.Interfaces.WorksheetCollectionData) that contains an "items" array with shallow copies of any loaded properties from the collection's items.

toJSON(): Excel.Interfaces.WorksheetCollectionData;

Returns

Event Details

onActivated

Occurs when any worksheet in the workbook is activated.

readonly onActivated: OfficeExtension.EventHandlers<Excel.WorksheetActivatedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.7 ]

Examples

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml

await Excel.run(async (context) => {
    let sheets = context.workbook.worksheets;
    sheets.onActivated.add(onActivate);

    await context.sync();
    console.log("A handler has been registered for the OnActivate event.");
});

onAdded

Occurs when a new worksheet is added to the workbook.

readonly onAdded: OfficeExtension.EventHandlers<Excel.WorksheetAddedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.7 ]

Examples

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml

await Excel.run(async (context) => {
    let sheet = context.workbook.worksheets;
    sheet.onAdded.add(onWorksheetAdd);

    await context.sync();
    console.log("A handler has been registered for the OnAdded event.");
});

onCalculated

Occurs when any worksheet in the workbook is calculated.

readonly onCalculated: OfficeExtension.EventHandlers<Excel.WorksheetCalculatedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.8 ]

onChanged

Occurs when any worksheet in the workbook is changed.

readonly onChanged: OfficeExtension.EventHandlers<Excel.WorksheetChangedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.9 ]

onColumnSorted

Occurs when one or more columns have been sorted. This happens as the result of a left-to-right sort operation.

readonly onColumnSorted: OfficeExtension.EventHandlers<Excel.WorksheetColumnSortedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.10 ]

onDeactivated

Occurs when any worksheet in the workbook is deactivated.

readonly onDeactivated: OfficeExtension.EventHandlers<Excel.WorksheetDeactivatedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.7 ]

Examples

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/excel/30-events/events-workbook-and-worksheet-collection.yaml

await Excel.run(async (context) => {
    let sheets = context.workbook.worksheets;
    sheets.onDeactivated.add(onDeactivate);

    await context.sync();
    console.log("A handler has been registered for the OnDeactivate event.");
});

onDeleted

Occurs when a worksheet is deleted from the workbook.

readonly onDeleted: OfficeExtension.EventHandlers<Excel.WorksheetDeletedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.7 ]

onFiltered

Note

This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Occurs when any worksheet's filter is applied in the workbook.

readonly onFiltered: OfficeExtension.EventHandlers<Excel.WorksheetFilteredEventArgs>;

Event Type

Remarks

[ API set: ExcelApi BETA (PREVIEW ONLY) ]

onFormatChanged

Occurs when any worksheet in the workbook has a format changed.

readonly onFormatChanged: OfficeExtension.EventHandlers<Excel.WorksheetFormatChangedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.9 ]

onFormulaChanged

Occurs when one or more formulas are changed in any worksheet of this collection. This event is for when the formula itself changes, not the data value resulting from the formula's calculation.

readonly onFormulaChanged: OfficeExtension.EventHandlers<Excel.WorksheetFormulaChangedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.13 ]

onMoved

Occurs when a worksheet is moved within a workbook. This event only triggers when a worksheet is directly moved within a workbook. This event doesn't trigger when the position of a worksheet is indirectly changed, such as when a new worksheet is inserted and causes existing worksheets to change positions.

readonly onMoved: OfficeExtension.EventHandlers<Excel.WorksheetMovedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.17 ]

onNameChanged

Occurs when the worksheet name is changed in the worksheet collection.

readonly onNameChanged: OfficeExtension.EventHandlers<Excel.WorksheetNameChangedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.17 ]

onProtectionChanged

Occurs when the worksheet protection state is changed.

readonly onProtectionChanged: OfficeExtension.EventHandlers<Excel.WorksheetProtectionChangedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.14 ]

onRowHiddenChanged

Occurs when the hidden state of one or more rows has changed on a specific worksheet.

readonly onRowHiddenChanged: OfficeExtension.EventHandlers<Excel.WorksheetRowHiddenChangedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.11 ]

onRowSorted

Occurs when one or more rows have been sorted. This happens as the result of a top-to-bottom sort operation.

readonly onRowSorted: OfficeExtension.EventHandlers<Excel.WorksheetRowSortedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.10 ]

onSelectionChanged

Occurs when the selection changes on any worksheet.

readonly onSelectionChanged: OfficeExtension.EventHandlers<Excel.WorksheetSelectionChangedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.9 ]

onSingleClicked

Occurs when left-clicked/tapped operation happens in the worksheet collection. This event will not be fired when clicking in the following cases: - The user drags the mouse for multi-selection. - The user selects a cell in the mode when cell arguments are selected for formula references.

readonly onSingleClicked: OfficeExtension.EventHandlers<Excel.WorksheetSingleClickedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.10 ]

onVisibilityChanged

Occurs when the worksheet visibility is changed in the worksheet collection.

readonly onVisibilityChanged: OfficeExtension.EventHandlers<Excel.WorksheetVisibilityChangedEventArgs>;

Event Type

Remarks

[ API set: ExcelApi 1.17 ]