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.

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.

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.

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.

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);
});

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 ]

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 ]

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 ]